Golang基础二之基本数据类型

数据类型
1.基础类型(basic type)
2.聚合类型(aggregate type)
3.引用类型(reference type)
4.接口类型(interface type)

本篇文章介绍 基础类型
整数
go 同时具备有符号整数和无符号整数

有符号整数:int8、int16、int32、int64
无符号整数:uint8、uint16、uint32、uint64
此外还有两种类型int、uint

类型不同时需要显示转化
例:
var apples int32 = 1
var oranges int16 = 2
var compote int = apples + oranges  //会报类型不匹配
改:
var compote = int(apples) + int(oranges)
浮点数
go 具有两种大小的浮点数 float32 和 float64
复数
go 具有两种大小的复数 complex64 和 complex128 ,二者分别由 float32 和 float64 构成。内置的
complex 函数根据给定的实部和虚部创建复数,而内置的 real 函数和 imag 函数分别提取实部和虚部。

例:
var x complex128 = complex(1, 2)   // 1+2i
var y complex128 = complex(3, 4)   // 3+4i
fmt.Println(x*y)                   // "(-5+10i)"
fmt.Println(real(x*y))             // "-5"
fmt.Println(imag(x*y))             // "10"
bool
if 和 for 语句里的条件就是布尔值

例:
func btoi(b bool) int {
  if b {
    return 1
  }
  return 0
}
字符串
字符串是不可变的字节序列,它可以包含任意数据,包括0值字节

内置的 len 函数返回字符串的字节数。
例:
s := "hello,world"
fmt.Println(len(s))  // "12"

切片:
fmt.Println(s[0:5])  // "hello"   与python基本一致

4个标准包操作对字符串操作
1. strings      // 用于搜索、替换、比较、切分、连接字符串
2. bytes        // 用于操作字节 slice
3. strconv      // 把字符串转换为布尔值、整数、浮点数,另外有为字符串添加/去除引号的函数
4. unicode      // 判别字符串值特性的函数,如:IsDigit、IsLetter、IsUpper等

例1:函数向表示十进制非负整数的字符串中插入逗号
package main

import "fmt"

func comma(s string) string {
	n := len(s)
	if n <= 3 {
		return s
	}
	return comma(s[:n-3]) + "," + s[n-3:]  //递归调用
}

func main() {
	//comma("12345")
	fmt.Println(comma("123456789"))
}

字符串和字节slice相互转换
s := "abc"
b := []byte(s)
s2 := string(b)
// 概念上,[]byte(s)转换操作会分配新的字节数组,拷贝填入s含有的字节,并生成一个slice引用,指向整个数组。


整数转换成字符串
例:
x := 123
y := fmt.Sprintf("%d", x)     // 第一种方法
fmt.Println(y, strconv.Itoa(x))  // 第二种方法
常量
所有常量本质上都属于基本类型:布尔型、字符串、数字
const p = 3

常量生成器 iota
iota 从0开始取值,逐项加1
例:
type Weekday int
const (
	Sunday Weekday = iota
  Monday
  Tuesday
  Wednesday
  Thursday
  Friday
  Saturday
)
原文地址:https://www.cnblogs.com/leisunny/p/14523984.html