1. 五個(gè)我最近在 Go 里學(xué)到的小技巧

        共 3273字,需瀏覽 7分鐘

         ·

        2024-07-03 08:00

        原文鏈接:https://medium.com/@andreiboar/5-small-tips-i-recently-learned-in-go-cf52d50cf129

        讓編譯器計(jì)算數(shù)組數(shù)量

        我們在 Go 通常很少使用數(shù)組 arrays,一般使用切片 Slice 來代替;

        但是當(dāng)你需要使用的時(shí)候,如果你對需要指定數(shù)量大小感到很煩時(shí)可以使用 [...] 讓編譯器自動(dòng)幫我們計(jì)算數(shù)組大?。?/p>

        package main  
          
        import "fmt"  
          
        func main() {  
        arr := [3]int{123}  
        sameArr := [...]int{123// Use ... instead of 3  
          
        // Arrays are equivalent  
        fmt.Println(arr)  
        fmt.Println(sameArr)  
        }

        使用 go run . 替換 go run main.go

        每當(dāng)我用 Go 寫第一行代碼時(shí),我都習(xí)慣于開始寫 main.go:

        package main

        import "fmt"

        func main() {
            sayHello()
        }

        func sayHello() {
            fmt.Println("Hello!")
        }  

        但是當(dāng) main.go 變得越來越大時(shí),我喜歡把一些結(jié)構(gòu)體移動(dòng)到新的文件里,還是在 main 這個(gè)包中。

        main.go:

        package main  
          
        func main() {  
         sayHello()  
        }

        say_hello.go:

        package main  
          
        import "fmt"  
          
        func sayHello() {  
         fmt.Println("Hello!")  
        }

        此時(shí)使用 go run main.go 將會(huì)得到以下的錯(cuò)誤:

        # command-line-arguments  
        ./main.go:4:2: undefined: sayHello

        此時(shí)可以使用 go run . 來解決這個(gè)問題。

        使用下劃線讓你的數(shù)字變得更易讀

        你知道可以使用下劃線使得你的長數(shù)字更易讀嗎?

        package main

        import "fmt"

        func main() {
            number := 10000000
            better := 10_000_000

            fmt.Println(number == better)

        可以在同一個(gè)包下有不同的測試包

        在 Go 中我通常認(rèn)為一個(gè)目錄下只能有一個(gè)包,但也不是完全正確的。

        假設(shè)你有一個(gè)包名為:yourpackage 此時(shí)你可以還可以在同一個(gè)目錄下創(chuàng)建一個(gè)名為 yourpackage_test 的包,同時(shí)在這個(gè)包里編寫你的測試代碼。

        這樣做的好處是,那些沒有被 exporter 的函數(shù)在 yourpackage_test 包下是不能直接訪問的,確保測試的是被暴露的函數(shù)。

        多次傳遞相同參數(shù)的簡單方法

        在使用字符串格式化函數(shù)時(shí),我總是覺得必須重復(fù)一個(gè)多次使用的參數(shù)很煩人:

        package main

        import "fmt"

        func main() {
            name := "Bob"
            fmt.Printf("My name is %s. Yes, you heard that right: %s\n", name, name)

        還好還有更簡便的方法,這樣只需要傳遞一次參數(shù):

        package main  
          
        import "fmt"  
          
        func main() {  
         name := "Bob"  
         fmt.Printf("My name is %[1]s. Yes, you heard that right: %[1]s\n", name)  
        }

        在這個(gè) Twitter 里發(fā)現(xiàn)的:

        希望你今天學(xué)到了一些新東西,最近有沒有發(fā)現(xiàn)一些你從來不知道的 Golang 小技巧?


        往期推薦

        如何找到并快速上手一個(gè)開源項(xiàng)目

        OpenTelemetry 深度定制:跨服務(wù)追蹤的實(shí)戰(zhàn)技巧

        從 Prometheus 到 OpenTelemetry: 指標(biāo)監(jiān)控的演進(jìn)與實(shí)踐

        Rust 在許多方面都優(yōu)于 Go,但為什么沒有 Go 流行?

        從 Dapper 到 OpenTelemetry:分布式追蹤的演進(jìn)之旅

         

        點(diǎn)分享

        點(diǎn)收藏

        點(diǎn)點(diǎn)贊

        點(diǎn)在看

         

        瀏覽 75
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 女人18片毛片90分钟以上 | 日本久操视频 | 成人在线免费 | 日本a在线天堂 | 成人无码www免费视频在线播放 |