Go 语言中包括以下内置基础类型:
布尔型:bool

整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint

浮点型:float32 float64

复数型:complex64 complex128

字符串:string

字符型:rune

错误型:error

1. bool类型

关键字: bool

可定义为: true 或者 false 或者 逻辑表达式

var bool1 bool = true
var bool2 bool = (2 == 2)

注:不能接受其他类型的赋值,包括(0, 1),也不支持自动或强制类型转换

2. 整型

分为有符号与无符号两种

值范围,如: int8 2^8 -128~127, uint8 0~255, 其他以此类推

int/uint 其值范围与平台有关,所以 int32 != int

支持强制类型转换,注意精度问题

变量2 = 类型(变量1)

3. 浮点型

即含小数点的数据

有两种: float32 float64(默认)

可相互转换,

注:比较大小时最好先确定比较精度, 再比较大小

4. 字符串

声明方式: var str string

值用 "" 或者 `` 包括, `` 可包含多行字符串

字符串的操作与数组相同

与如php等其他语言不同的是,字符串的内容在初始化后,不能被修改,但可重新完全赋值

s := "123"
s[1] = "3" //compile error
$s = "123"; $s[1] = "3"; echo $s; //133

5. 字符型

两种字符类型: 

byte 对应 utf-8

rune 对应 unicode

6. 错误型

在 go 语言中,负责错误信息处理的是 error 接口,也可以使用 errors 包

var e error = errors.New("...")

在 go 语言中,函数支持多个返回值

可用下面的方式来处理错误

res, err := funName(param)
if err != nil {
//处理错误
} else {
//无错误
} func funName(param) (res type, err error) {
if ... {
err = errors.New(...)
return
}
...
return res, nil
}

7. 复数

在此省略,有需要可再了解

note_type_1.go code list

package main

import "fmt"
import "errors" //引入 errors 包 //声明 bool 型全局变量
var (
enable = true
disable = false
) func main() {
//预定义常量 iota
const (
c0 = iota //0
c1 = iota //0+1
c2 //会自动赋上一个定义常量的值或者表达式
)
const (
c3 = iota //0
c4
)
fmt.Println("c0, c1, c2 = ", c0, c1, c2)
fmt.Println("c3, c4 = ", c3, c4) /*
//这种写法编译时会报错,需要 if condition { 在同一行代码中
//missing condition in if statement
//enable == true not used
if enable == true
{
fmt.Println("error")
}
*/
if enable == true {
fmt.Println("enabled = ", enable)
} else {
fmt.Println("enabled = ", disable)
}
/*
//编译时会出现以下错误:
// cannot use 1 (type int) as type bool in assignment
enable = 1;
// cannot convert 1 to type bool
// cannot convert 1 (type int) to type bool
// cannot use 1 (type int) as type bool in assignment
enable = bool(1)
*/ var (
a int8 = 1
b int = 2
)
//invalid operation: a + b (mismatched types int8 and int)
//c := a + b
//需要做类型转换
c := int(a) + b
fmt.Println("c = a + b = ", c) //int32 与 int 是两种不同的类型,但是可用强制类型转换
var d int32
//d = b // cannot use b (type int) as type int32 in assignment
d = int32(b)
fmt.Println("d = ", d) var f1 float32 = 1.23456
fmt.Printf("f1 = %.3f \n", f1) //1.235
f2 := 1.111
//compile error: invalid operation: f1 + f2 (mismatched types float32 and float64
//f3 := f1 + f2
b1 := (float64(f1) == f2)//该比较方式不严谨
if b1 {
fmt.Println("float64(f1) == f2")
} else {
fmt.Println("float64(f1) != f2")
} //用 "" 括起来表示字符串
//字符串的操作与数组一样
var str string = "hello"
fmt.Println("str = ", str)
fmt.Println("str[1] = ", str[1])
fmt.Printf("%c \n", str[1]) // s[i]取第i+1个字符
//str = "hi" //compile ok
//str[0] = 'c' //compile error: cannot assign to str[0] //多行字符串,用 `` 包含
str2 := `
SELECT username, pwd
FROM tb_user
WHERE id = 123456
`
fmt.Println(str2) str3 := " world!"
fmt.Println("str + str3 = ", str + str3) // s1 + s2, 连接字符串 //len(s)返回字符串的长度
fmt.Printf("length of str2 = %d \n", len(str2)) //s[m:n] 返回从m位开始到n结束之间的字符串,m, n可以省略, 此时m为0, n为len(s)
s := "hello"
s = "c" + s[1:]
fmt.Println(s) //cello
fmt.Println(s[:3]) //cel
fmt.Println(s[1:3]) //el
fmt.Println(s[:]) //cello //byte 用 '' 包括字符
//var ch byte = "1" //compile error: cannot use "1" (type string) as type byte in assignment
var ch1 byte = 'a'
fmt.Printf("ch1 = %c \n", ch1) //ch1 = a
fmt.Println(ch1) //97
//rune
var ch2 rune = 'b'
fmt.Printf("ch2 = %c \n", ch2) //ch2 = b
fmt.Println(ch2) //98 //error
err := errors.New("error1")
if err != nil {
//错误处理...
fmt.Println(err)
} var e1 error
if e1 == nil {
fmt.Println("no problem")
} res, e := div(5, 0)
//res, e := div(5, 1)
if e != nil {
//错误处理
fmt.Println(e) //如果div(5, 0), 会输出: error: division by zero
} else {
//正确
fmt.Println("res = ", res) //如果div(5, 1),会输出: res = 5
}
}
//定义函数
func div(a, b int) (res int, e error) {
if b == 0 {
e = errors.New("error: division by zero")
return
}
return a /b , nil
}

运行结果:

go - 内置基础类型的更多相关文章

  1. 【Go入门教程2】内置基础类型(Boolean、数值、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

    这小节我们将要介绍如何定义变量.常量.Go内置类型以及Go程序设计中的一些技巧. 定义变量 Go语言里面定义变量有多种方式. 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型 ...

  2. 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

    这小节我们将要介绍如何定义变量.常量.Go 内置类型以及 Go 程序设计中的一些技巧. 定义变量 Go 语言里面定义变量有多种方式. 使用 var 关键字是 Go 最基本的定义变量方式,与 C 语言不 ...

  3. go语言内置基础类型

    1.数值型(Number) 三种:整数型.浮点型和虚数型(有符号整数表示整数范围 -2n-1~2n-1-1:无符号整数表示整数范围 0~2n-1) go内置整型有:uint8, uint16, uin ...

  4. C# 内置的类型转换方法

    C# 提供了下列内置的类型转换方法: 序号 方法 & 描述 1 ToBoolean把类型转换为布尔型. 2 ToByte把类型转换为字节类型. 3 ToChar如果可能的话,把类型转换为单个 ...

  5. C#内置委托类型Func和Action对比及用法

    C#的内置委托类型 Func Action 返回值 有(只有一个Tresult) 无 重载 17个(0参-16参) 17个(0参-16参) 泛型 支持 支持 系统内置 是 是 是否需要声明 否 否 c ...

  6. JS Error 内置异常类型 处理异常 Throw语句

    Exceptional Exception Handling in JavaScript       MDN资料 Anything that can go wrong, will go wrong. ...

  7. python高级(二)—— python内置序列类型

    本文主要内容 序列类型分类: (1)容器序列.扁平序列 (2)可变序列.不可变序列 列表推导式 生成器表达式 元组拆包 切片 排序(list.sort方法和sorted函数) bisect pytho ...

  8. python所有的内置异常类型汇总

    内置异常基类 在 Python 中,所有异常必须为一个派生自 BaseException 的类的实例. 通过子类化创建的两个不相关异常类永远是不等效的,既使它们具有相同的名称. 下列异常主要被用作其他 ...

  9. c++内置变量类型

    1,各种变量占据的内存空间 char:1个字节,也可亦作为0-255的数值参与运算 一般来说,静态存储区的自动赋初值,动态则不自动(貌似也不对,因为非内置变脸的类型,也都调用了默认构造函数进行初始化) ...

随机推荐

  1. Indy的TCPServer到底能支持多少个连接

    最近一个项目,最开始使用IdTcpServer,在大压力测试的时候,只连接了800个多一点的客户端(每个客户端连接上之后每秒钟发送一个几十字节的报文,服务器应答).但是持续的时间不会超过10分钟,服务 ...

  2. NetBSD是个开源到源码的系统

    How to get NetBSD NetBSD is an Open Source operating system, and as such it is freely available for ...

  3.   PS2: 这篇文章中的图片绘图工具使用的是Dia (sudo apt-get install dia)。据说yEd也很不错。

    SBCL编译过程 - O.Nixie的专栏 - 博客频道 - CSDN.NET PS2: 这篇文章中的图片绘图工具使用的是Dia (sudo apt-get install dia).据说yEd也很不 ...

  4. HashMap的工作原理(转)

    HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此 ...

  5. Android Fragment的介绍与使用(案例Demo)

    应用场景: 众所了解Android上的界面展示都是通过Activity实现的,可是Activity也有它的局限性,相同的界面在手机上显示可能非常好看,在平板上就未必了.为了让界面能够在平板上更好地展示 ...

  6. 解决Qt程序在Linux下无法输入中文的办法

    解决Qt程序在Linux下无法输入中文的办法 一位网友问我怎样在Linux的Qt的应用程序中输入中文,我一開始认为不是什么问题,可是后面自己尝试了一下还真不行.不仅是Qt制作的应用程序,就连Qt Cr ...

  7. Android中九种dialog对话框代码

    public class MainActivity extends Activity { private static final int MAX_PROGRESS = 100; private st ...

  8. MySQL JDBC事务处理、封装JDBC工具类

    MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...

  9. MySQL聚合函数、控制流程函数(含navicat软件的介绍)

    MySQL聚合函数.控制流程函数(含navicat软件的介绍) 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据 ...

  10. hdu3001(状压dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题意:n 个城市已经 m 条路 以及对应路费 c,要求遍历所有城市最少的路费,每个城市不能超过2 ...