Go语言学习笔记介绍1变量、类型和常量
介绍
这是来自 Funai Research Institute Digital 的 osw。我决定在工作中使用 Go 语言,所以我要从现在开始学习它。这是备忘录。如果您可以参考,我将不胜感激。
目标听众
- 正在学习围棋的人
- 那些已经学习过其他语言基本语法的人
学习环境
学习环境是这样的:下面这篇文章总结了这个环境的搭建备忘录。如果您有兴趣,请参考它。
- Windows 11 / 主页
- VS 代码
- go 版本 go1.19.2 windows/amd64
- git 版本 2.38.0.windows.1
围棋概述
我将简单介绍一下概述。
- 编译器风格的静态类型语言
- 可以交叉编译
- 通过设置以下环境变量,根据每个环境生成可执行文件
- GOOS
- GOARCH
- 也可以嵌入
- 通过设置以下环境变量,根据每个环境生成可执行文件
- 很多标准工具
- 编译、文档生成、静态分析等。
- 并发变得简单
- 丰富的库
- 2009 年开源
- 2012年发布正式版Go1.0
- 最新版本 Go1.19.2(截至 2022/10/17)
- 每六个月更新一次
如果你已经熟悉C/C++/Java等其他语言,可能会有些迷惑。在 Go 中,编译器会自动在语句末尾插入分号,因此似乎没有必要显式编写它。你可能需要习惯像 Go 那样写,比如在 if 语句中省略 (),在 switch 中不写 break。
但是,一旦习惯了,它看起来就很整洁,所以在那之前,都是抄经的。
代码模板
学习的模板。我们将使用它来编写代码。 Go 程序似乎以 main 包的 main 函数作为入口点。
模板
// main関数が所属するファイルはmainパッケージに含ませる必要がある
package main
// fmtパッケージをインポート
import "fmt"
/*
* エントリポイント
*/
func main() {
// コードを記述
}
多变的
句法
// 宣言
var 変数 型
var 変数1, 変数2 型
// 初期化
var 変数 型 = 値
var 変数 = 値 // 型推論が働き、型を省略可能
変数 := 値 // := を使った初期化をするとvar, 型を省略可能
// 複数の変数を初期化
var 変数1, 変数2 型 = 値1, 値2
var 変数1, 変数2 = 値1, 値2
変数1, 変数2 := 値1, 値2
// var 変数1, 変数2 型 = 値1 宣言した分だけ値を渡す必要があり、これはコンパイルエラーになる
// 変数をまとめて定義
var (
変数 型 = 値
変数 = 値
変数1, 変数2 型 = 値1, 値2
変数1, 変数2 = 値1, 値2
// 変数 := 値 var()の中では := は使えず、コンパイルエラーになる
)
示例代码
package main
import "fmt"
// 関数の外では := は使えず、varを使って定義する必要がある
var gNum = 100
// gStr := "test" コンパイルエラー
func main() {
// 宣言
var num1 int
num1 = 0
// 初期化
var num2 int = 1
var num3 = 2
num4 := 3
// 複数の変数を初期化
var str1, str2 string = "aaa", "bbb"
var str3, str4 = "ccc", "ddd"
str5, str6 := "eee", "fff"
// 変数をまとめて定義
var (
num5 int = 10
num6 = 11
str7 string = "uuu"
str8 = "vvv"
str9, str10 string = "www", "xxx"
str11, str12 = "yyy", "zzz"
// str13 := "test" var()の中では := は使えず、コンパイルエラーになる
)
fmt.Printf("宣言
")
fmt.Printf("num1: %d
", num1)
fmt.Printf("初期化
")
fmt.Printf("num2: %d
", num2)
fmt.Printf("num3: %d
", num3)
fmt.Printf("num4: %d
", num4)
fmt.Printf("複数の変数を初期化
")
fmt.Printf("str1, str2: %s, %s
", str1, str2)
fmt.Printf("str3, str4: %s, %s
", str3, str4)
fmt.Printf("変数をまとめて定義
")
fmt.Printf("num5: %d
", num5)
fmt.Printf("num6: %d
", num6)
fmt.Printf("str5: %s
", str5)
fmt.Printf("str6: %s
", str6)
fmt.Printf("str7, str8 : %s, %s
", str7, str8)
fmt.Printf("str9, str10: %s, %s
", str9, str10)
fmt.Printf("str11, str12: %s, %s
", str11, str12)
}
执行结果
宣言
num1: 0
初期化
num2: 1
num3: 2
num4: 3
複数の変数を初期化
str1, str2: aaa, bbb
str3, str4: ccc, ddd
変数をまとめて定義
num5: 10
num6: 11
str5: eee
str6: fff
str7, str8 : uuu, vvv
str9, str10: www, xxx
str11, str12: yyy, zzz
零值
如果只是声明一个变量而不初始化它,似乎会根据类型自动输入一个零值。
类型 | 零值 |
---|---|
数值类型(int、float 等) | 0 |
布尔类型 | 错误的 |
字符串类型 | ""(空字符串) |
输出到屏幕
这次使用 fmt.Printf() 进行输出,不过好像可以通过导入 fmt 包来使用各种 PrintX()。
Print() 和 Println() 指定变量用“,”隔开,所以我个人觉得有点不适应。我使用它是因为可以像 C 一样使用的 Printf 非常适合。下一篇文章总结了各个库之间的区别,有兴趣的可以参考一下。
函数名的第一个字符
函数名的第一个字母似乎表示链接,似乎分别表示对外部包的公共/私有。这意味着如果您尝试使用 fmt.Println() 来尝试 fmt.println(),则会发生错误。
第一个字符 | 意义 |
---|---|
大写字母 | 发布到外部包 |
小写 | 专用于外部包 |
示例代码
package main
// importも()でまとめる事ができる。","で区切る必要はない
import (
"fmt"
)
func main() {
// fmt.println("test") コンパイルエラー: undefined: fmt.printlnとなる
fmt.Println("test")
}
类型
整数类型
类型 | 少量 | 符号 | 最小值 | 最大值 |
---|---|---|---|---|
整数8 | 8 | 可 | -128 | 127 |
整数16 | 16 | 可 | -32768 | 32767 |
int32 / 符文 | 32 | 可 | -2147483648 | 2147483647 |
整数64 | 64 | 可 | -9223372036854775808 | 9223372036854775807 |
uint8/字节 | 8 | 没有任何 | 0 | 255 |
uint16 | 16 | 没有任何 | 0 | 65535 |
uint32 | 32 | 没有任何 | 0 | 4294967295 |
赢t64 | 64 | 没有任何 | 0 | 18446744073709551615 |
浮点型
类型 | 少量 |
---|---|
浮动32 | 32 |
浮动64 | 64 |
字符串类型
类型 |
---|
细绳 |
布尔类型
类型 |
---|
布尔 |
复数类型
类型 |
---|
复杂64 |
复杂128 |
环境依赖
似乎建议对 int 使用整数,除非有特殊原因,例如指定大小或指定无符号。
类型 | 位(32 位操作系统) | 位(64 位操作系统) |
---|---|---|
整数 | 32 | 64 |
单位 | 32 | 64 |
uintptr | 32 | 64 |
类型转换
如果你不在 Go 中进行显式类型转换,你会得到一个编译错误。
句法
// 値v, 型Tのとき
var 変数 T = T(v)
// シンプルに書くと
変数 := T(v)
示例代码
package main
import "fmt"
func main() {
f := 5.1
var i int = f
fmt.Println(i)
}
我认为 float -> int 会截断小数并存储一个整数,但我得到了一个编译错误。
执行结果
.hello.go:7:14: cannot use f (variable of type float64) as type int in variable declaration
持续的
使用const
定义一个常量。只能使用字符、字符串、布尔值和数值,不能用:=初始化。
关于命名,似乎用 Pascal 大小写是很常见的。但是,这样做时,请注意链接,并记住如果第一个字母大写,则表示它将发布到外部包。
句法
const World = "World"
const Truth = true
const Tax = 0.1
// ()でまとめることもできる
const (
World = "World"
Truth = true
Tax = 0.1
)
示例代码
package main
import "fmt"
const (
World = "World"
Truth = true
Tax = 0.1
)
func main() {
fmt.Println(World)
fmt.Println(Truth)
fmt.Println(Tax)
}
执行结果
World
true
0.1
综上所述
目前为止就这样了。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308629959.html
- 上一篇 »Go语言基础语法笔记
- 下一篇 »go语言方法-学习笔记 - 长方形