Closed2

Goの勉強メモ

moshmosh

Goのimport文はパスを指定する。パスは <module>/<go.modからパッケージディレクトリへの相対パス>の形式。
パッケージの使用はパッケージ名を指定する。

go.modがルートにあるとき、以下のようなコードのコンパイルが通る。

lib/lib2.go
package lib3

func Greet(name string) string {
	return "Hello, " + name + "!"
}
main/main.go
package main

import (
	"fmt"

	"example.com/hello/lib"
)

func main() {
	fmt.Println(lib3.Greet("world"))
}

自動フォーマットでimport文は以下のように明示的なエイリアスにフォーマットされる。

import (
	"fmt"

	lib3 "example.com/hello/lib"
)

参考になるページ: 【Go】import 書き方まとめ

moshmosh

スライスにappendすると裏にある配列の値にも影響が及ぶ。

package main

import (
	"fmt"
)

func main() {
	var sl [1]int
	var sl2 = sl[0:0]
	sl2 = append(sl2, 1)
	fmt.Println(sl) // [1]
	fmt.Println(sl2) // [1]
}

ただし、キャパシティを超える場合は影響せず、返り値のみがappendされたスライスになる。

package main

import (
	"fmt"
)

func main() {
	var sl [1]int
	var sl2 = sl[0:0]
	sl2 = append(sl2, 1)
	fmt.Println(sl) // [1]
	fmt.Println(sl2) // [1]

	var sl3 = append(sl2, 2)
	fmt.Println(sl2) // [1]
	fmt.Println(sl3) // [1 2]
}
このスクラップは2024/03/30にクローズされました