【golang】1.0 go语言入门:数据类型、常量、枚举
基础内容:
goland下载安装地址:
Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)
国内镜像
七牛云 - Goproxy.cn
打开你的终端并执行
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
开发软件
Goland/Intellij Idea+Go 插件
vs code
新建项目。
new Project
格式化:
创建go.mod
module learngo
go 1.18
版本和安装的go版本保持一致。
新建\learngo\hello.go
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
运行配置
也可以如下运行:
基础语法
package main
import "fmt"
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func main() {
fmt.Println("hello world basic")
variableZeroValue()
}
go语言变量定义了一定要用到,不然就会报错。
package main
import "fmt"
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
var a int = 3
var s string = "初始化"
fmt.Println(a, s)
}
func main() {
fmt.Println("hello world basic")
variableInitialValue()
}
或者可以这样:
package main
import "fmt"
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
var a, b int = 3, 4
var s string = "初始化"
fmt.Println(a, b, s)
}
func main() {
fmt.Println("hello world basic")
variableInitialValue()
}
go也可以自动推断数据的基本类型:
package main
import "fmt"
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
var a, b int = 3, 4
var s string = "初始化"
fmt.Println(a, b, s)
}
func variableTypeDeduction() {
var a, b, c, d = 3, 4, true, "def"
fmt.Println(a, b, c, d)
}
func variableShorter() {
a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
fmt.Println(a, b, c, d)
}
func main() {
fmt.Println("hello world basic")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
}
内建变量类型
也就是基础数据类型
char在多国语言中一字节存在很多坑,所以go用了rune,比如utf-8是4字节的字符来代替rune(32位)
complex就是复数,complex64实部和虚部都是32位,
complex128实部和虚部都是64位。
至于什么是复数,要么高中以上文化,要么百度学习。
package main
import (
"fmt"
"math"
"math/cmplx"
)
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
var a, b int = 3, 4
var s string = "初始化"
fmt.Println(a, b, s)
}
func variableTypeDeduction() {
var a, b, c, d = 3, 4, true, "def"
fmt.Println(a, b, c, d)
}
func variableShorter() {
a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
fmt.Println(a, b, c, d)
}
func euler() {
c := 3 + 4i
fmt.Println(cmplx.Abs(c))
// 验证欧拉公式
fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1)
fmt.Println(cmplx.Exp(1i*math.Pi) + 1)
fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1)
}
func main() {
fmt.Println("hello world basic")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
euler()
}
强制类型转换
go语言只有强制类型转换,没有隐式类型转换。
package main
import (
"fmt"
"math"
"math/cmplx"
)
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
var a, b int = 3, 4
var s string = "初始化"
fmt.Println(a, b, s)
}
func variableTypeDeduction() {
var a, b, c, d = 3, 4, true, "def"
fmt.Println(a, b, c, d)
}
func variableShorter() {
a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
fmt.Println(a, b, c, d)
}
func euler() {
c := 3 + 4i
fmt.Println(cmplx.Abs(c))
// 验证欧拉公式
fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1)
fmt.Println(cmplx.Exp(1i*math.Pi) + 1)
fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1)
}
func triangle() {
var a, b int = 3, 4
var c int
c = int(math.Sqrt(float64(a*a + b*b)))
fmt.Println(c)
}
func main() {
fmt.Println("hello world basic")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
euler()
triangle()
}
常量
go语言的字母大写是有含义的,所以我们在定义常量的时候,不会去大写常量命名。
package main
import (
"fmt"
"math"
"math/cmplx"
)
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
var a, b int = 3, 4
var s string = "初始化"
fmt.Println(a, b, s)
}
func variableTypeDeduction() {
var a, b, c, d = 3, 4, true, "def"
fmt.Println(a, b, c, d)
}
func variableShorter() {
a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
fmt.Println(a, b, c, d)
}
func euler() {
c := 3 + 4i
fmt.Println(cmplx.Abs(c))
// 验证欧拉公式
fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1)
fmt.Println(cmplx.Exp(1i*math.Pi) + 1)
fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1)
}
func triangle() {
var a, b int = 3, 4
var c int
c = int(math.Sqrt(float64(a*a + b*b)))
fmt.Println(c)
}
func consts() {
//const filename = "abc.txt"
//const a, b = 3, 4
const (
filename = "abc.txt"
a, b = 3, 4
)
var c int
c = int(math.Sqrt(float64(a*a + b*b)))
fmt.Println(filename, c)
}
func main() {
//fmt.Println("hello world basic")
//variableZeroValue()
//variableInitialValue()
//variableTypeDeduction()
//variableShorter()
//
//euler()
//triangle()
consts()
}
枚举类型
go语言没有特定的枚举类型,一般通过常量来定义。
...
func enums() {
//const (
// cpp = 0
// java = 1
// python = 2
// golang = 3
//)
// iota,表示为自增值
const (
cpp = iota
java
python
golang
)
fmt.Println(cpp,
java,
python,
golang)
}
func main() {
//fmt.Println("hello world basic")
//variableZeroValue()
//variableInitialValue()
//variableTypeDeduction()
//variableShorter()
//
//euler()
//triangle()
//consts()
enums()
}
iota,自增长,还有更复杂的用法。
func enums() {
//const (
// cpp = 0
// java = 1
// python = 2
// golang = 3
//)
// iota,表示为自增值
const (
cpp = iota
java
python
golang
)
fmt.Println(cpp,
java,
python,
golang)
// b,kb,mb,gb,tb,pb
const (
b = 1 << (10 * iota) //左移10倍
kb
mb
gb
tb
pb
)
fmt.Println(
b,
mb,
gb,
tb,
pb)
}
func main() {
//fmt.Println("hello world basic")
//variableZeroValue()
//variableInitialValue()
//variableTypeDeduction()
//variableShorter()
//
//euler()
//triangle()
//consts()
enums()
}
发表评论 (审核通过后显示评论):