経験豊富な開発者のための Golang - パート II
9599 ワード
いらっしゃいませ、
これは Golang チュートリアル シリーズの第 2 部です.第 1 部をチェックアウトしていない場合は、ぜひチェックしてください.
中断したところから続けましょう...
Go のプリミティブ データ型
構文:
var variableName type = value
以下は、Go のプリミティブ データ型の型です.
ブール値
bool
型は、事前に宣言された定数 true
または false
によって示されるブール値のセットを表します. %t
を使用してブール値を出力します. 例:
var flag bool = !(10 > 0 && 20 < 40)
fmt.Printf("%t\n", flag) // false
数値
float
型はなく、float32
または float64
のみfloat32
の精度は小数点以下 7 桁です. float64
の精度は小数点以下 15 桁です. int16
を int32
に割り当てることはできません.これを克服するには、明示的な型変換を行う必要があります. アーキテクチャに依存するタイプ:
uint either 32 or 64 bits
int same size as uint
uintptr an unsigned integer large enough to store the uninterpreted bits of a pointer value
アーキテクチャに依存しないタイプ:
uint8 the set of all unsigned 8-bit integers (0 to 255)
uint16 the set of all unsigned 16-bit integers (0 to 65535)
uint32 the set of all unsigned 32-bit integers (0 to 4294967295)
uint64 the set of all unsigned 64-bit integers (0 to 18446744073709551615)
int8 the set of all signed 8-bit integers (-128 to 127)
int16 the set of all signed 16-bit integers (-32768 to 32767)
int32 the set of all signed 32-bit integers (-2147483648 to 2147483647)
int64 the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)
float32 the set of all IEEE-754 32-bit floating-point numbers
float64 the set of all IEEE-754 64-bit floating-point numbers
明示的な型変換:
var val1 int16 = 32
var val2 int32 = int32(val1) // explicit conversion
複素数
complex(real, imaginary)
関数を使用して複素数を作成し、real()
& imag()
関数を使用して実部と虚部を抽出します. %v
を使用して複素数を出力します.complex64 the set of all complex numbers with float32 real and imaginary parts
complex128 the set of all complex numbers with float64 real and imaginary parts
例:
var cp1 = complex(1.2, 2.1)
var cp2 = complex(3.4, 5.8)
fmt.Println(real(cp1), imag(cp2)) // 1.2 5.8
fmt.Printf("%v\n", cp1 + cp2) // (4.6 + 7.9i)
キャラクター
\u(4 hex digit)
または \U(8 hex digits)
を使用します%c
または %U
.byte alias for uint8, for storing ASCII characters
rune alias for int32, for storing UTF-8 characters
例:
var char1 byte = 65 // ASCII 'A'
var char2 byte = '\x41' // ASCII 'A'
var char3 rune = '\u0041' // Unicode 'A'
var char4 rune = '\U00101234' // Unicode
fmt.Printf("%c %U\n", char1, char4) // A U+1012334
ポインタ
%p
を使用してポインターを出力します. 構文:
var identifier *type = address
例:
var num int = 6
var ptr *int = &num
fmt.Printf("%p\n", ptr) // address of num
*ptr = 20 // changes num to 20
fmt.Println(num) // 20
ptr++ // illegal, pointer arithmetic not supported
const val = 10
ptr = &val // illegal, why?
See this for why.
弦
string
は、Java で不変であるのと同じ理由で、Go で不変です. len(str)
を使用します. 例:
var str string = "Let's Go"
fmt.Println(len(str)) // 8
var str2 string = "C:\newfolder\text.txt"
fmt.Println(str2) // C:
// ewfolder ext.txt, bcoz escape sequence
var str3 string = `C:\newfolder\text.txt` // raw string
fmt.Pritln(str3) // C:\newfolder\text.txt
連結と更新:
var a = "Hello "
var b = "world"
var c = a + b // Hello world, concatenation
a += b // Hello world, update but create new object bcoz immutability
索引付け:
var str = "hello"
fmt.Printf("%c\n", str[0]) // h
str[0] = 'j' // illegal
スライス:
var str = "hello"
fmt.Println(str[1:4]) // ell, index 1-3
fmt.Println(str[:4]) // hell, index 0-3
fmt.Println(str[1:]) // ello, index 1-end
fmt.Println(str[:]) // hello, index 0-end
fmt.Println(str[-1]) // illegal, but legal in Python
fmt.Println(str[:-1]) // illegal, but legal in Python
文字列変換と関数
文字列変換の場合:
import "strconv"
例:
package "main"
import "strconv"
import "fmt"
func main() {
// string to numeric
num, _ := strconv.Atoi("1234")
fmt.Println(num) // 1234 - int
fval, _ := strconv.ParseFloat("3.46", 64) // (str, floatSize)
fmt.Println(fval) // 3.46 - float64
num2, _ := strconv.ParseInt("123", 10, 64) // (str, base, intSize)
fmt.Println(num2) // 123 - int64
// numeric to string
str1 := strconv.Itoa(789)
fmt.Println(str1) // 789 - string
str2 := strconv.FormatFloat(3.45, 'f', -1, 32)
fmt.Println(str2) // 3.45 - string
str3 := strconv.FormatInt(1234, 10)
fmt.Println(str3) // 1234 - string
}
文字列関数の場合:
import "strings"
便利な機能:
func Contains(s, substr string) bool
func Count(s, sep string) int
func HasPrefix(s, prefix string) bool
func HasSuffix(s, suffix string) bool
func Index(s, sep string) int
func Join(a []string, sep string) string
func LastIndex(s, sep string) int
func Repeat(s string, count int) string
func Replace(s, old, new string, n int) string
func Split(s, sep string) []string
func ToLower(s string) string
func ToUpper(s string) string
func Trim(s string, cutset string) string
これで、このチュートリアルの第 2 部は終了です.次に、Golang での制御構造があります.近日公開...
Reference
この問題について(経験豊富な開発者のための Golang - パート II), 我々は、より多くの情報をここで見つけました https://dev.to/livesamarthgupta/golang-for-experienced-developers-part-ii-2lj1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol