Golang | 第一章 | 2.数据类型

本文详细介绍了Golang中的数据类型,包括整型(int8到int64及对应的无符号类型)、浮点型(float32和float64)、字符串(UTF-8编码,支持多行)、字符(byte表示ASCII,rune处理多语言)以及切片。特别强调了在特定场景下如何选择适当的数据类型,如在二进制传输中避免使用int和uint,以及切片的初始化方法。
摘要由CSDN通过智能技术生成

1.整型

  • 按长度分为int8, int16, int32, int64
  • 对应无符号数uint8, uint16, uint32, uint64

Go用int和uint自动匹配特定平台的整型长度(大多为64位)

※在二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同平台的字节长度变化的影响,不要用int和uint

 

 

2.浮点型

  • 按长度:float32,float64
package main

import(
	"fmt"
	"math"
)

func main() {
	fmt.Printf("%f\n",math.Pi)//默认长度,换一行,输出PI
	fmt.Printf("%.3f",math.Pi)//3位精度,不换行,输出PI
}

 

3.输出Sin(正弦函数)图像 

※灰度图的O点在左上角,我们需要的Math.Sin函数图像O点在左下角,需要做平移变换

package main

import (
	"image"
	"image/color"
	"image/png"
	"log"
	"math"
	"os"
)

func main() {

	// 图片大小
	const size = 300

	// 根据给定大小创建灰度图
	pic := image.NewGray(image.Rect(0, 0, size, size))

	// 遍历每个像素
	for x := 0; x < size; x++ {
		for y := 0; y < size; y++ {
			// 填充为白色
			pic.SetGray(x, y, color.Gray{255})
		}
	}

	// 从0到最大像素生成x坐标
	for x := 0; x < size; x++ {

		// 让sin的定义域从0~size(300) px ->0~1 px ->0~2Π px
		s := float64(x) * (2 * math.Pi) / size//此时图片中包括一个周期的波形,如果改为4*π,将显示两个周期的波形

		// sin函数振幅默认为1px,乘以size/2,水平翻转后,下移size/2个像素
		y := - math.Sin(s)*size/2 + size/2 //O点在左上角,所以是+size/2

		// 用黑色绘制sin轨迹
		pic.SetGray(x, int(y), color.Gray{0})
	}

	// 创建文件
	file, err := os.Create("sin.png")

	if err != nil {
		log.Fatal(err)
	}
	// 使用png格式将数据写入文件
	png.Encode(file, pic) //将image信息写入文件中

	// 关闭文件
	file.Close()
}

4.字符串

  • 采用UTF-8编码

多行字符串,使用双顿号

const str=`
	hhh
	ggg
	jjj
`
	fmt.Println(str)

输出为: 

 

 4.字符

字符串中的每一个元素,有两种

  • uint8类型(byte),表示ASCII码
  • rune类型,代表一个UTF-8字符,用于处理中文、日文等.实际上是一个int32 

 

5.切片

※类似数组,但数据类型可以有函数

a:=make([]int,5)
	
	a[0]=3
	a[4]=4
	fmt.Print(a[0:3])//前闭后开

初始化时,不能写成

b:=[9]int

或者

b:=int[9]

 

6.数据类型的转换

格式:

数据类型(变量)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值