Closed3
Go の基本を抑えていく
Go におけるポインタとは
型情報+メモリアドレス
a := 1
b := &a
fmt.Printf("型情報: %T アドレス/: %p", b, b)
型情報: *int /アドレス: 0xc00001e060
【Goのやさしい記事】Goのポインタとか値渡しとか参照渡しを5分で学ぼう - Qiita
ポインタのメリット
通常、引数で関数にオブジェクトを渡す場合は値渡し(コピー)となるが、ポインタで渡すようにすれば関数へ参照渡しとしてオブジェクトを渡すことができる
参照渡しでは
- 「その」オブジェクトを渡すので関数内で値を直接加工できる
- 値をコピーするコストがかからない
そのため、構造体は参照渡しが推奨されている
メソッドの定義の仕方
メソッド
type Person struct {
Name string
Age int
}
func (p Person) greet() {
fmt.Println("私は" + p.Name + "で" + strconv.Itoa(p.Age) + "歳です。")
}
func main() {
p := Person{Name: "幸太", Age: 10}
p.greet()
私は幸太で10歳です。
greet() {
の前にある (p Person)
をレシーバという
通常の関数
type Person struct {
Name string
Age int
}
func greet(p Person) {
fmt.Println("私は" + p.Name + "で" + strconv.Itoa(p.Age) + "歳です。")
}
func main() {
p := Person{Name: "幸太", Age: 10}
greet(p)
}
フォーマッター
gofmt
が標準のフォーマッター
goimports
を使うと、 gofmt
のコード整形に加え、パッケージを必要に応じて追加・削除・並び替えしてくれる
このスクラップは2022/11/06にクローズされました