02go的基本数据类型

go基本结构和基本数据类型

注释

go的注释规则和c++中一样。单行注释为//,多行注释为/* */

//单行注释
/*
多行注释
多行注释
*/

常量

和c++语言一样,go中的常量定义也是使用const关键字。但是go语言和c++不同之处在于,go的类型声明在变量名之后,且可以省略类型。如:

const a int=1
const b=2
const c="3"

变量

go语言中,变量的声明方式主要有以下几种。下面创建a,b,c,d四个int类型的变量。对于每个变量名,只可使用一次。

var a=1//自动推断类型
var b int=2//声明时直接赋值
var c,d int//同时声明多个相同类型的变量
var e int//声明后再赋值
c,d,e=3,4,5
f:=6//这种方法为自动推断类型。只能用于函数中,不可用于全局变量中。
g,h:=7,8//自动推断生成多个类型

基本类型

go语言中主要有以下基本类型:

int,int32,int64,float32,float64,bool,string

和c++很大的一个区别在于,每种类型只能和本类型进行运算,即使int和int64相加也不行。想要进行加减乘除运算,必须进行类型转换。其中bool类型不可以进行加减操作。string类型只可以进行+操作,意味字符串拼接。

var a int32=1
var b int64=64
a=a+b//编译错误。invalid operation: a + b (mismatched types int32 and int64)
a=a+int32(b)//编译正确

运算符

go的运算符和其他语言基本一致。包括

+  -  *  /  % 
+=  -=  *=  /=  %=  
||  &&  !  
++  -- 
^  |  &  >>  <<
* &

注意go中**没有取反运算符~。**最后一行的*代表指针取值,&代表取地址。倒数第二行的&代表二进制与操作。

类型别名

type关键字类似于c++中的typedef,用于给类型取别名,如下面代码声明了一个int类型,名为temp,值为1的变量。

type a int
var temp a=1

strings包和strconv包

stings包中提供了很多关于操作字符串的函数,最常用的为strings.Replace(s, old, new string, n int) string函数。该函数前三个参数都为string类型,分别为在那个字符串上进行替换,替换哪个字符串,替换为哪个字符串。最后一个参数为替换几次,当值为-1时,代表全部替换。该函数返回替换完成后的字符串。使用例子:

str:="123321123321123321123321"
str=strings.Replace(str,"1", "+", -1)
fmt.Println(str)
//最终输出为:
//+2332++2332++2332++2332+

strconv包中提供了字符串和其他类型之间转换的函数。如:strconv.Atoi()为string转int,strconv.Itoa()为int转string,以及strconv.ParseBool()等一系列Parse函数。例子:

str1:="123"
str2:="true"
int1:=1234
res1,err1:=strconv.Atoi(str1)//返回两个参数,第二个参数为nil时代表无错误
res2,err2:=strconv.ParseBool(str2)//返回两个参数,第二个参数为nil时代表无错误
res3:=strconv.Itoa(int1)//只返回一个string类型的数据,不返回错误

fmt.Println(res1,err1,reflect.TypeOf(str1))//reflect.TypeOf()函数可以查看变量的类型
fmt.Println(res2,err2,reflect.TypeOf(res2))
fmt.Println(res3,reflect.TypeOf(res3))
/*输出:
123 <nil> string
true <nil> bool
1234 string
*/

nil相当于c++中的None或NULL,表示空。对于基本数据类型,不赋值时的初始化值分别为:int,float一系列为0。bool为false。string为""

指针

go中的指针和c++中指针大致一样。例子:

a:=123
b:=&a
*b=456
fmt.Println(a)
//输出:
//456
t一系列为0boolfalsestring""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值