昨天已经能够透过 Go 印出 Hello World 了,今天要来认识资料型别,
如果都准备妥妥的,那我们就开始吧 ─=≡Σ(((っ゚∀゚)っ
由於 Go 在宣告变数或是函式前,会有加上型别的需求,因此了解有哪些常用的型别非常重要。
字串 string : "Hello"
、"Amazing"
布林值 bool : True
、False
整数 int : 123
、28825252
浮点数 float64 : 0.314
、100.002
字串及数字的型别还能再分得更多更细,但在接下来的学习过程可能不会使用到,就先跳过不提。
array 和 slice 在资料的结构上基本上是相同的,但是 array 需要在 []
指定值的数量,因此长度会是固定的。
// [n]type {data}
// n 阵列元素数量、type 阵列元素类型、data 值
[]int
[5]int {1, 2, 3, 4, 5}
初次碰到 array 竟然会指定长度这件事吓了好大一跳,想说资料不可能每次都固定长度啊,我不想学了...(开玩笑的)
但其实 slice 才更像平常常用的阵列形式,slice 不需要指定长度,使用上更具弹性及实用性。而两者相同的部分在於阵列内的资料的属性必须相同,因此字串只能是字串,数字就只能是数字。
关於更详细的 slice 使用方式,後续会再花篇幅解释(・ω・)b
// slice
[]string {"Hello", "It's", "Amazing!"}
[]int {5, 2, 0}
map 是以 key: value
为组合的集合,可以透过 key 找到对应的 value。
特别需要注意的是 key 的资料型别必须一致,value 的资料型别也必须一致。
// [] 内放 key 的资料型态,外面放 value 的资料型态
map[string]string{} // => 得到一个空 map
// {} 内的值必须符合定义的型别
map[string]string{"name": "Ba", "age": "18"}
函式在程序语言的输入输出中扮演了很重要的角色,Go 的 package 也是依赖函式在做输出,就来看看函式是如何宣告及应用吧:
// 最基本的起手式
func plus(){
// to do...
}
// 如果想要有输入参数,则需要规定传入的型态
func plus(a int, b int) {
fmt.Println(a + b)
}
// 如果有 return 值,也要帮他加上型态
func plus(a int, b int) int {
return a + b
}
指标是用来指向值所存放记忆体位置,并非值本身。因此可以透过记忆体位置,取得在那个记忆体位置的值。
*T
为 type 的指标
var p *int
&
会指向该变数的记忆体位置,如果有透过指标更改变数的值的话,原本在记忆体位置内的值就会被更动。
i := 10
p = &i
fmt.Println(*p) // => 10
*p = 21
fmt.Println(i) // => 21
可以作为自定义型别来使用。
type Cat struct {
Name string
Age int
}
fat := Cat{"BuiBui", 5}
这次没讲到的 goroutine 以及 channel 可以说是 Go 相当大的特色,由於还没好好了解,待後续篇章再来好好了解及解释。
今天先到这边,有任何建议及问题都欢迎与我讨论 :)
<<: Day-03 说明在 Ruby 里常数 (constant) 跟变数 (variable) 的差别是什麽?
快到结尾了,再让笔者水一篇 XDD,今天我们来聊聊 CNN 会不会是深度学习领域的最後呢? CNN...
Mikrotik RouterOS从入门到实战系列-Mikrotik入门第四课 VPN详解与实战应用...
这篇接续上一篇,将电影名称爬取後转为json档,今天就要再转为xlsx档,使资料以表格方式呈现。废话...
Pipeline tags: IT铁人 Clock Cycle Time Clock Cycle T...
Quantum Counting Quantum search + Quantum phase es...