記事のディレクトリ
1.公式ウェブサイトにアクセスしてダウンロードします
- 公式ウェブサイトhttps://golang.google.cn/doc/install?download=go1.16.windows-amd64.msi
- より多くのコンテンツを含み、煩わしくないgo言語の動作環境を構成します。
- vs coreを使用してコンパイルする場合は、対応するプラグインをインストールする必要があります。
2.実行します
次のコードを入力してください
package main
import "fmt"
func main() {
fmt.Println("Hello world")
}
を実行するgo build
と、対応するexeファイルが生成され、ファイルを実行すると、生成が成功します。
2.2生成されたファイルの名前を変更する場合
go guild -o yourname.exe
2.3実行は2つのステップから1つのステップになります(つまり、最初にbuidを実行してから、生成されたexeファイルをbinディレクトリに配置します)。
go install
2.4クロスプラットフォームコンパイル
環境が異なればコマンドも異なるので、後で説明しましょう。
3.基本的な使用法
3.1ディレクトリ構造
// 这个包是属于哪个包,是main的话,可以直接执行。
package main
// 导入包,要使用双引号
import "fmt"
// 函数外只能声明变量,不能写语句
func main() {
fmt.Println("Hello world")
}
3.2変数宣言
package main
// 声明变量
import "fmt"
// var name string
// var age int
// var isOk bool
// 批量的声明变量
// GO 中提倡使用驼峰式的命名规则
var(
name string
age int //
isOk bool // false
)
func main() {
name="理想"
age =16
isOk = true
// Go 语言中非全局声明必须使用,不使用就编译过去
fmt.Print(isOk)
fmt.Println(name)
fmt.Printf("age:%d",age) // 使用占位符打印
}
3.3さまざまな変数の宣言
var s1="你好" // 当编译器能推断的时候,可以不需要指定类型。
s2:="哈哈" // 简短的变量声明,只能在函数内部使用
x,_:=foo() //匿名变量 有一个变量,但是你不想用,要使用——可以使用_
注:パブリック変数が宣言されている場合のみ、宣言できますが使用できません。ローカル変数が宣言されている場合は、コンパイルできません。
3.4定数とイオタ
iotaは定数カウンターの略です
// 常量定义以后,不能修改,在程序运行期间,不能改变。
const s3=3.1415926
// 批量声明常量
const (
STATUS_OK=200
NOTEFOUNT=404
)
const(
n1=100
n2
n3 // 不声明的话,默认都和上一行一样。
)
// iota
const(
a1=iota // a1=0
a2 // 1
a3 // 2
a4 // 3
)
iota
// iota
const(
c1=iota // c1=0
c2=100 // c2=100
c3=iota // c3=2 在同一const里,iota 出现,一行累加一次
c4 // c4=3
)
イオタの基本的な使い方
// 定义数量级
const (
_=iota
KB=1<<(10*iota) // 左移10位
MB=1<<(10*iota) // 再左移10位
GB=1<<(10*iota) // 再左移10位
TB=1<<(10*iota) // 再左移10位
PB=1<<(10*iota) // 再左移10位
)
3.5浮動小数点
func main() {
// 整型
var a int =5
fmt.Printf("%d\n",a)
// 浮点数
var b float64 =4.5
fmt.Printf("%f\n",b)
// 查看类型
f1:=1.23456
fmt.Printf("%T\n",f1)
}
3.6ブール値
func main() {
b1:=true
var b2 bool
fmt.Printf("%v\n",b1)
fmt.Printf("%T\n,%v\n",b2,b2)
}
出力結果
true
bool
false
3.7文字列
バックティックの役割:元のコンテンツを変更せずに印刷できます
func main() {
// 字符串下,反斜线是原样的输出
a:=`
竹杖芒鞋轻胜马
一蓑烟雨任平生
`
fmt.Println(a)
}
直接文字列は変更できません。スライスに変更して、文字列の特定の部分を変更できます。
func main() {
s1 := "白萝卜"
s2 := []rune(s1) // 强制转换成切片
s2[0] = '红' // 应该改成字符型,不应该是双引号
fmt.Println(string(s2))
}
3.8プロセス制御
判断の声明
func main() {
// 单个语句的判断
age := 15
if age > 18 {
fmt.Println("澳门首家线上赌场开业了")
} else {
fmt.Println("该写暑假作业了")
}
// 多个条件判断
if age > 35 {
fmt.Println("人到中年")
} else if age > 18 {
fmt.Println("青年")
} else {
fmt.Println("好好学习!")
}
}
ループステートメント
func main() {
// 基本操作
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// 变种1 (省略初试语句)
var a = 1
for ; a < 10; a++ {
fmt.Println(a)
}
// 键值循环
s := "Hellow 你好"
for i, v := range s {
fmt.Printf("%d,%c\n", i, v)
}
}
ステートメントの続行と中断
func main() {
// 变种1 (省略初试语句)
var a = 1
for ; a < 10; a++ {
if a==3 {
continue // 调出
}
if a == 5 {
fmt.Println("over")
break // 调出for 循环
}
fmt.Println(a)
}
}
switch
swithchは、elseifのバリアントと同等です。
func main() {
// 变种1 (省略初试语句)
n := 3
if n == 1 {
fmt.Println("大拇指")
} else if n == 2 {
fmt.Println("食指")
} else if n == 3 {
fmt.Println("中指")
} else if n == 4 {
fmt.Println("无名指")
} else if n == 5 {
fmt.Println("小拇指")
} else {
fmt.Println("无效的数字")
}
// 如果 switch 简化上面的代码
switch n {
case 1:
fmt.Println("大拇指")
case 2:
fmt.Println("食指")
default:
fmt.Println("无效的数字")
}
}
3.92層ループを呼び出す
フラグを外部に設定することも、使用することもできますがgoto + lable
、外部で変数を設定する方法を使用することをお勧めします。
func main() {
// 变种1 (省略初试语句)
var flag = false
for i := 0; i < 10; i++ {
for j := 0; j < 20; j++ {
if j == 10 {
flag = true // 调出内循环
break
}
fmt.Println(j)
}
if flag {
break // 调出外循环
}
}
}
3.10オペレーター
配列の長さは配列型の一部です。つまり、[2] intと[5] intは同じ型ではありません。
var a1 [3]int
var a2 [4]int
a1=a2 // 这样是错误的
3.11配列の初期化とトラバーサル
func main() {
// 如果不初始化,数组就是0
var a1 [3]int
// 初始化方法1
a1 = [3]int{
1, 2, 3}
fmt.Println(a1)
// 初始化方法2
a2 := [...]int{
0, 1, 2, 3, 4} // 使用 ... 可以自动推算出来后边的数
fmt.Println(a2)
// 初始化方法3
a3 := [5]int{
0, 1}
fmt.Println(a3)
// 初始化方法4 (根据索引来初始化)
a4 := [5]int{
0: 4, 4: 2}
fmt.Println(a4)
// 数组的遍历 (使用 foreach)
citys := [...]string{
"北京", "上海", "深圳"}
for i := 0; i < len(citys); i++ {
fmt.Println(citys[i])
}
// 数组的遍历 (for range 遍历)
for i, v := range citys {
fmt.Println(i, v)
}
// 多维数组 [[1,2][3,4][5,6]]
var a5 [3][2]int
a5 = [3][2]int{
[2]int{
1, 2},
[2]int{
3, 4},
[2]int{
5, 6},
}
fmt.Println(a5)
// 数组是值类型的
b1 := [...]int{
1, 2, 3}
b2 := b1
b2[0] = 100
fmt.Println(b1)
fmt.Println(b2)
}