Golangベースのデータ型

4773 ワード

前言
Go言語には豊富なデータ型があり、基本的な整数型、浮動小数点型、ブール型、文字列のほか、配列、スライス、構造体、関数、map、チャネルなどがある.Go言語の基本的なタイプは他の言語と大きく異なる.
ベースデータ型
せいけい
整数型は、int 8、int 16、int 32、int 64に対応する符号なし整数型:uint 8、uint 16、uint 32、uint 64の2つの大きなクラスに分けられます.
その中で、uint 8は私たちがよく知っているbyte型、int 16はC言語のshort型、int 64はC言語のlong型に対応しています.
を選択します.
説明
uint8
符号なし8ビット整数(0~255)
uint16
符号なし16ビット整数(0~65535)
uint32
符号なし32ビット整数(0~4294967295)
uint64
符号なし64ビット整数(0~18446744073709551615)
int8
符号付き8ビット整数(-128~127)
int16
符号付き16ビット整数(-32768~32767)
int32
符号付き32ビット整数(-21147483648から2147483647)
int64
符号付き64ビット整数(-922337203685475808~922337203685475807)
fmt関数を用いて整数を異なる進数で示すことができる.
package main
 
import "fmt"
 
func main(){
    //    
    var a int = 10
    fmt.Printf("%d 
", a) // 10 fmt.Printf("%b
", a) // 1010 %b // 0 var b int = 066 fmt.Printf("%o
", b) // 66 // 0x var c int = 0xff fmt.Printf("%x
", c) // ff fmt.Printf("%X
", c) // FF }

プレースホルダフラグ
%T  //        
%v  //       
%b  //      
%d  //      
%o  //      
%x  //       
%s  //      

とくしゅせいけい
を選択します.
説明
uint
32ビットオペレーティングシステムではuint 32、64ビットオペレーティングシステムではuint 64
int
32ビットオペレーティングシステムではint 32、64ビットオペレーティングシステムではint 64
uintptr
ポインタを格納するためのシンボルなし整数
浮動小数点
を選択します.
説明
float32
32ビット浮動小数点型
float64
64ビット浮動小数点型
complex64
32ビット実数と虚数
complex128
64ビット実数と虚数
データ型変換
func test(){
    var a int8 = 100
    var b int16 = int16(a) //  int8   int16
    fmt.Printf("a=%d b=%d
",a,b) }

文字列
Go言語の文字列は、他の元のデータ型(int、bool、float 32など)を使用するように、元のデータ型で現れる.Go言語の文字列の内部実装はUTF-8で符号化され、二重引用符""で包まれている.
//    
s := "Hello   "
//      、  、        
c1 := 'h'
c2 := '1'
c3 := ' '
//   :1  =8Bit(8     )
// 1   'A'=1   
// 1 utf8     ' '=   3   
の文字列
//            
a1 :=`   
   
   
`

文字列の一般的な操作
// len()  ->      
s1 := "  "
fmt.Println(len(s1))

// +  or       or Springtf ->     
name := "  "
world := "   "
fmt.Println(name + world)
fmt.Printf("%s%s",name,world)

ss1 := fmt.Sprintf("%s%s",name,world) //                    ,    
fmt.Println(ss1)

// strings.Split ->     
s2 := "D:/a/b/c"
ret := strings.Split(s2,"/")
fmt.Println(ret)  // [D: a b c]

// strings.Contains ->      
s3 := "HelloWorld"
ret := strings.Contains(s3,"W")
fmt.Println(ret) // true

// strings.HasPrefix and strings.HasSuffix  ->  /     
s3 := "HelloWorld"
fmt.Println(strings.HasPrefix(s3,"H")) // true
fmt.Println(strings.HasSuffix(s3,"x")) // false

// strings.Index and strings.LastIndex ->       
s4 := "abcdefge"
fmt.Println(strings.Index(s4,"c")) // 2
fmt.Println(strings.LastIndex(s4,"e")) // 4

// strings.Join ->join  
s2 := "D:/a/b/c"
ret := strings.Split(s2,"/")
fmt.Println(strings.Join(ret,"+")) // D:+a+b+c

// strings.Replace ->     
s1 := "hellooowa"
s1 = strings.Replace(s1,"he","wo",2)
fmt.Println(s1) // wollooowa

// strings.ToLower or strings.ToUpper ->    /  
s1 := "jack"
s1 = strings.ToLower(s1)
fmt.Println(s1) // jack

s2 := "JACK"
s2 = strings.ToUpper(s2)
fmt.Println(s2) // JACK

// strings.TrimSpace ->           
s1 := " sk sk "
s1 = strings.TrimSpace("sksk")
fmt.Println(s1)  // sksk

// strings.Trim ->             
s1 := "hello world"
s1 = strings.Trim(s1,"hd")
fmt.Println(s1) // ello worl

// strings.TrimLeft ->            
s1 := "hello world"
s1 = strings.TrimLeft(s1,"he")
fmt.Println(s1) // llo world

// strings.TrimRight ->            
s1 := "hello world"
s1 = strings.TrimRight(s1,"ld")
fmt.Println(s1) // hello wor

// strconv.Itoa ->           
str1 := strconv.Itoa(1000)
fmt.Printf("%T",str1)  // string

// strconv.Atoi ->           
str1 := "1000"
number,err := strconv.Atoi(str1)
if err != nil{
    fmt.Println("can not conver to int",err)
}else{
    fmt.Println(number) // 1000
}

文字列を変更文字列を変更するには、[]runまたは[]byteに変換してからstringに変換する必要があります.どの変換でもメモリが再割り当てされます.
s2 := "   " // [     ]
s3 := []rune(s2) //             rune  
s3[0] = ' '
fmt.Println(string(s3)) //  rune