iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
Software Development

學習Go系列 第 8

Go day 8 (basic types)

basic types

go 的基本型別主要有 7 種 3 種數值型別(int、float、complex),以及 boo、string、byte、rune.而 3 種數值型別又根據不同的位元數做分類.
整數又分為帶正負號的整數,另外 int32 跟 rune 是同義的,rune 用來指該值為 Unicode :

int  int8  int16  int32  int64

無正負號的整數,而 uint8 跟 byte 是同義的,byte 用來強調該值的原始資料而不是數值 :

uint uint8 uint16 uint32 uint64 uintptr

浮點數分為 32 及 64 :

float32 float64

複數分為 64 及 128 :

complex64 complex128

在 Go 的 +、-、*、/都可用在整數、浮點數、及複數上,但只有餘數運算子(%)只能用在整數上且正負號與被除數相同.

fmt.Println(-10 % 4)  // -2
fmt.Println(-10 % -4) // -2
fmt.Println(10 % -4)  // 2

overflow

如果經過運算後位元數超過型別的範圍則會發生 overflow.
uint8 的範圍為 0~255,int8 的範圍為 -182 ~ 127.

var u uint8 = 255
fmt.Println(u, u+1, u+2) // 255 0 1
var i int8 = 127
fmt.Println(i, i+1, i+2) // 127 -128 -127

浮點數表示

浮點數通常以 Printf 的 %g 輸出,%g 會選擇適合的精確度表示,也可以透過 %e (指數)或 %f (無指數)表示.
%23.16f 表示 16 位精確度的 e 次方值,並以 23 個字元寬顯示.

package main

import (
	"fmt"
)

func main() {
	var c = 3.14159265358979323846264
	fmt.Printf("c : %g , %e , %23.16f ,%25.23f ", c, c, c, c)
	// c : 3.141592653589793 , 3.141593e+00 ,      3.1415926535897931 ,3.14159265358979311599796
}

複數運算

複數的運算如下,(1 + 2i) * (3 + 4i) = 3 + 4i + 6i + 8(-1) = -5 + 10i,
-5 是實數透過 real() 取出,10 是實數透過 imag() 取出

package main

import (
	"fmt"
)

func main() {
	var c1 complex128 = complex(1, 2)
	var c2 complex128 = complex(3, 4)
	fmt.Println(c1 + c2) // (4+6i)
	fmt.Println(c1 - c2) // (-2-2i)
	var c3 = c1 * c2
	fmt.Println(c3)       // (-5+10i)
	fmt.Println(real(c3)) // -5
	fmt.Println(imag(c3)) // 10
}


上一篇
Go day 7 (init & scope)
下一篇
Go day 9 (bool & string & iota)
系列文
學習Go30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言