PHP->GO 基础-数据类型-笔记
字符类型
package main
import "fmt"
func main(){
var ch byte //声明字符类型
//格式化输出 %c以字符方式打印,“%d以整型方式打印”
ch = 97
fmt.Printf("%c,%d\n",ch,ch)
ch = 'a' //字符使用单引号
fmt.Printf("%c,%d\n",ch,ch)
//大写转小写,小写转大写,大小写相差32,小写大
fmt.Printf("大写:%d, 小写:%d\n", 'A', 'a')
fmt.Printf("大写转小写:%c", 'A'+32)
fmt.Printf("小写转大写:%c", 'a'-32)
}
字符串类型
package main
import "fmt"
func main(){
var str1 = string //声明变量
str1 = "abc"
str2 := "mike" //自动推导
//len() 内置函数可获取字符串长度
fmt.PrintIn("长度:", len(str2))
// 支持使用key 获取单个字符 例如 str1[0] = "a"
}
类型 | string | byte |
---|---|---|
字符数量 | 可以多个(var a string = "efg") | 只能是一个 (var a byte = 'b') 转义字符除外 |
符号 | " " | ' ' |
隐藏结束符 | \0 | 无 |
复数类型
package main
import "fmt"
func main(){
var t complex128 //声明类型
t = 2.1 + 3.14i //赋值 (2.1 + 3.14i) complex128
t2 := 3.14+4.4i //自动推导类型 (3.14+4.4i) complex128
//通过内建函数,取实步和虚部
real(t) //取实部
imag(t) //取虚部
}
格式化输出
package main
import "fmt"
func main(){
a := 10
b := "abc"
c := 'a'
d := 3.14
// %%T操作变量所属类型
fmt.Printf("%T,%T,%T,%T\n",a,b,c,d)
//%d 整型格式
//%s 字符串格式
//%c 字符个数
//%f 浮点型个数
fmt.Printf("%d,%s,%c,%f\n",a,b,c,d)
}
变量的输入
package main
import (
"fmt"
)
func main() {
var a int //声明变量
fmt.Printf("请输入变量a:")
//阻塞等待用户的输入
fmt.Scanf('%d',&a) //注意加 &
fmt.Scan(&a) //不需要输入格式,更简易
fmt.Println("a=",a)
}
变量作用域
package main
import "fmt"
var a byte //全局变量 在函数外定义
func main() {
var a int //局部变量
//不同作用域,允许定义同名变量
//使用变量的原则,就近原则
fmt.Printf("T%\n", a) //int
{
var a float32
fmt.Printf("2:T%\n", a) //float32
}
test()
}
func test() {
fmt.Printf("3:T%\n", a) //bety
}
类型转换
package main
import "fmt"
func main() {
// 不能转换的类型,叫不兼容类型
var flag bool
flag = true
fmt.Printf("flag = %t\n",flag)
//bool 类型不能转为int
fmt.Printf("flag = %d\n",int(flag))
//0就是假 非0就是真
//整型也不能转为bool
flag = bool(1) //报错
var ch = byte
ch = 'a' //字符类型本质上就是整型
var t = int
t = int(ch) //类型转换, 吧ch的值取出来后,转成int 给t赋值
fmt.Print("t= ",t)
}
类型别名
package main
import "fmt"
func main() {
//给int64起一个别名叫bigint
type bigint int64
var a bigint //等价于 var a int 64
fmt.Printf("a type is %T\n", a)
//设置多个别称
type (
long int64
char byte
)
var b long = 11
var ch char = 'a'
fmt.Printf("b= %d,ch =%c\n", b, ch)
}
运算符
非0就是真,0就是假(但是go 语言中的bool类型和int 类型不兼容)
判断一个数的范围 不能用 0<= a <= 10 需要用 0<= a && a<= 10
if判断语句
package main
import "fmt"
func main() {
s := "屌丝"
if s == "屌丝" {//与php区别在于 不需要()
fmt.Println("ok")
}
//if支持1个初始化语句,初始化语句和判断以分号分割
if a := 10; a == 10 {
fmt.PrintIn("ok")
}
}
switch语句
package main
import "fmt"
func main() {
a := 2
switch a {
case 1:
fmt.Println(1)
//fallthrough //不跳出switch 语句,后面的无条件执行
break //go语言保留了break 关键字 跳出switch 不写则默认包含
case 2:
fmt.Println(2)
break
case 3,4,5,6://case 后面可以写多个值
fmt.Println(3)
break
default:
fmt.Println(0)
}
//支持一个初始化语句,初始化语句和变量本身,以分号隔开
switch b := 1; b {
case 1:
fmt.Println(1)
case 2:
fmt.Println(2)
case 3:
fmt.Println(3)
default:
fmt.Println(0)
}
score := 85
switch { //可以没有条件
case score > 90: //case 后面可以放条件(与php不同)
fmt.Println(1)
case score > 80:
fmt.Println(2)
case score > 70:
fmt.Println(3)
default:
fmt.Println(0)
}
}
for循环
package main
import "fmt"
func main() {
//for 初始化条件;判断条件;条件变化{
// }
//判断条件是否为真, i <= 100 , 如果为真,执行循环体,如果为假,跳出循环体
// 条件变化 i++
// 重复...
num := 0
for i := 1; i <= 10; i++ {
num++
}
fmt.Println("num =", num)
}
range 的使用
package main
import "fmt"
func main() {
str := "abc"
//迭代打印每个元素,默认返回2个值
for i, data := range str {
fmt.Printf("str[%d]=%c\n", i, data)
}
//第二个返回值,默认丢弃,返回元素的位置(下标)
for i := range str {
fmt.Printf("str[%d]=%c\n", i, str[i])
}
for i, _ := range str {
fmt.Printf("str[%d]=%c\n", i, str[i])
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接