Go 言語の登場により、開発はより効率的、安全、そしてシンプルになりました。シンプルなコード スタイルと効率的なパフォーマンスにより、多くの開発者や企業の最初の選択肢となっています。ただし、Go 言語の理解と使用が深まるにつれて、さまざまな作業ニーズに対応するために、より高度で柔軟な記述方法が必要になる場合があります。そこで、Golang の高度な使用法をいくつか紹介します。
#defer
ステートメントは Go 言語の主要な機能であり、関数の実行後に次のステートメントを実行できるようにします。例:
func f() (n int) { defer func() { n++ }() return 1 } func main() { i := f() println(i) }
実行結果は 2 で、n
の実行後に 2 が返されます。ここで注意すべき点は、関数内に panic
が含まれている場合でも、defer
は関数の実行後にのみ実行されるということです。
型アサーションは、インターフェイス型を別のインターフェイス型または具象型に変換できます。例:
var obj interface{} var str string = "hello" obj = str if s, ok := obj.(string); ok { fmt.Println(s) }
ここでは、str
がインターフェイス型変数 obj
に割り当てられ、型アサーションを使用して obj
を ## に変換します。 # string を入力して判定し、成功した場合は
hello を出力します。型アサーション中に変換が失敗した場合は、パニックではなく false が返されることに注意してください。
range ステートメントは、配列、スライス、マップ、文字列、チャネル、その他の型をループおよび反復するために使用できます。例:
for i, v := range []int{1, 2, 3} { fmt.Println(i, v) }
range ループを使用して、int 型のスライスを反復します。最初の値はインデックスで、2 番目の値はスライス内の値です。
type MyInt int func (m MyInt) Plus(n int) int { return int(m) + n } func main() { var m MyInt = 1 fmt.Println(m.Plus(2)) }
MyInt が定義され、それに対して
Plus メソッドが定義されます。加算演算は、
MyInt 型を
int 型に変換することで実装されます。
func Adder() func(int) int { sum := 0 return func(x int) int { sum += x return sum } } func main() { a := Adder() fmt.Println(a(1)) fmt.Println(a(2)) }
func(int) int である関数
Adder を定義しており、内部関数を返します。この内部関数は、
Adder 関数内の自由変数
sum にアクセスし、
x を
sum に加算します。
以上がGolang の高度な使用法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。