package main
import "fmt"
func main(){
fmt.Println("Hello world")
}
注意点:
整型分为两位,有符号和无符号两种类型
有符号类型可以存储任何整数,无符号类型只能存储自然数
在保证程序正确运行下,尽量使用占用空间小的数据类型
fmt.Printf("%T", var_name)输出变量类型
unsafe.Sizeof(var_name)查看变量占用字节
类型 | 描述 |
---|---|
uint8 | 无符号8位整型(0 到 255) |
uint16 | 无符号16位整型(0 到 65535) |
uint32 | 无符号32位整型(0 到 4294967295) |
uint64 | 无符号32位整型(0 到 18446744073709551615) |
int8 | 有符号8位整型(-128 到 127) |
uint16 | 有符号8位整型(-32768 到 32767) |
uint32 | 有符号8位整型(-2147483648 到 2147483647) |
uint64 | 有符号8位整型(-9223372036854775808 到 9223372036854775807) |
浮点型也就是小数类型,可以存放小数。比如6.6,-12.34
类型 | 描述 |
---|---|
float32 | IEEE-754 32位浮点型数 |
float64 | IEEE-754 64位浮点型数 |
complex64 | 32 位实数和虚数 |
complex128 | 64 位实数和虚数 |
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的,Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
Go语言的字符使用UTF-8编码,英文字母占一个字符,汉字占三个字符。字符可以进行运算,也就是对应的ascii相加
package main
import "fmt"
func main(){
// 单引号内只能包裹单个字符
c := 'a' // <==> var c byte = 'a'
str := "yven" // <==> var str string = "yven"
fmt.Printf("c : %v\n",c) //打印的是字符a对应的ascii码值
fmt.Printf("c : %c\n",c) //打印c : a
fmt.Printf("str : %v\n",str) // 打印 str : yven
}
字符串的两种标识形式
var str = "Yven \n law" //识别其中的换行符,并换行显示
var str = `Yven \n lae` //原样输出
字符串拼接使用"+"
布尔类型也叫bool类型,bool类型数据只允许取值true或false
bool类型占一个字节
使用与逻辑判断
var num int = 10
var ptr *int = &int
//答应上方ptr对应的值
fmt.Println(*ptr)
详细请见:
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | "" |
字符 | 0 |
Go在不同类型的变量之间需要显式转换,也就是Go的数据类型不能自动转换。
var num1 int = 777
var num2 float64 = float64(num1)
var num3 uint8 = uint8(num2)
fmt.Println(num1,num2,num3)
注意点:
方式一:
func Sprintf(format string,a ...interface{}) string
Sprintf根据format参数生成格式化的字符串并返回字符串。
var num1 int = 99;
var num2 float64 = 23.456
var isTrue bool = true
var char byte = 'A'
var str string
str = fmt.Sprintf("%d", num1)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = fmt.Sprintf("%f", num2)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = fmt.Sprintf("%t", isTrue)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = fmt.Sprintf("%d", char)
fmt.Printf("str类型为 %T str = %q\n",str, str)
输出结果为
str类型为 string str = "99"
str类型为 string str = "23.456000"
str类型为 string str = "true"
str类型为 string str = "65"
方式二:
使用strconv包的函数
var num1 int = 99;
var num2 float64 = 23.456
var isTrue bool = true
var str string
str = strconv.FormatInt(int64(num1), 10)
str = strconv.Itoa(num1)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = strconv.FormatFloat(num2, 'f', 10, 64)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = strconv.FormatBool(isTrue)
fmt.Printf("str类型为 %T str = %q\n",str, str)
输出结果:
str类型为 string str = "99"
str类型为 string str = "23.4560000000"
str类型为 string str = "true"
使用strconv包的函数
package main
import (
"fmt"
"strconv"
)
func main() {
var str string = "true"
var str1 string = "123456"
var str2 string = "123.456"
var isTrue bool
var num int64
var num2 float64
isTrue, _ = strconv.ParseBool(str)
fmt.Printf("str类型为 %T str = %v\n",isTrue, isTrue)
num, _ = strconv.ParseInt(str1, 10, 64)
fmt.Printf("str类型为 %T str = %v\n",num, num)
num2, _ = strconv.ParseFloat(str2, 64)
fmt.Printf("str类型为 %T str = %v\n",num2, num2)
}
输出结果为:
str类型为 bool str = true
str类型为 int64 str = 123456
str类型为 float64 str = 123.456
原文:https://www.cnblogs.com/louyefeng/p/11316778.html