Categorygithub.com/motty93/golang
module
0.0.0-20241126051518-7c5f7931d054
Repository: https://github.com/motty93/golang.git
Documentation: pkg.go.dev

# README

Golang

型(type)

  • bool
  • int8/int16/int32/int64
  • uint8/uint16/uint32/uint64
  • float32/float64
  • complex64/complex128
  • byte: 1バイトデータ(uint8と同義)
  • rune: 1文字(int32と同義)
  • uint: uint32 or uint64
  • int: int32 or int64
  • uintptr: ポインタを表現するのに十分な非負整数
  • string

演算子

  • x + y 加算 (文字列の連結にも利用)
  • x - y 減算
  • x * y 乗算
  • x / y 除算
  • x % y 除算の余り
  • x & y 論理積(AND)
  • x | y 論理和(OR)
  • x ^ y 排他的論理和(XOR)
  • x &^ y x AND (NOT y)
  • x << y yビット左にシフト
  • x >> y yビット右にシフト
  • x = y xにyを代入
  • x := y xにyを代入(初期化の使用可能)
  • x++ x = x + 1 と同義
  • x-- x = x - 1 と同義
  • x += y x = x + y と同義
  • x -= y x = x - y と同義
  • x *= y x = x * y と同義
  • x /= y x = x / y と同義
  • x %= y x = x % y と同義
  • x &= y x = x & y と同義
  • x |= y x = x | y と同義
  • x ^= y x = x ^ y と同義
  • x &^= y x = x &^ y と同義
  • x <<= y x = x << y と同義
  • x >>= y x = x >> y と同義
  • x && y xかつy(AND)
  • x || y xまたはy(OR)
  • !x xがtrueの場合false/falseの場合true(NOT)
  • x == y xとyが等しければ
  • x != y xとyが等しくなければ
  • x < y yがxより大きければ
  • x < y yがx以上であれば
  • x > y yがxより小さければ
  • x >= y yがx以下であれば
  • ch <- x chチャネルにxを送信
  • x =<- ch chチャネルからxに受信

リテラル・値

  • nil 無しを示す特別な値
  • true 真偽値の真
  • false 真偽値の偽
  • 1234 整数
  • 1_234 整数(カンマ区切りの代わりに_を使用。_は無視される)
  • 0777 8進数
  • 0o755 8進数(0Oも可)
  • 0x89ab 16進数(0Xも可)
  • 0b1111 2進数(0Bも可)
  • 123.4 小数
  • 1.23e4 浮動小数点数(1.23E4も可)
  • 1.23i 虚数
  • "ABC" 文字列
  • 'A' 文字(rune)

エスケープシーケンス

  • \a ベル(U+0007)
  • \b バックスペース(U+0008)
  • \t タブ(U+0009)
  • \n 改行(U+000A)
  • \v 垂直タブ(U+000B)
  • \f フォームフィード(U+000C)
  • \r キャリッジリターン(U+000D)
  • " ダブルクォート(U+0022)
  • ' シングルクォート(U+0027)
  • \ バックスラッシュ(U+005C)
  • \x42 ASCII文字(U+0000~U+00FF)
  • \u30A2 Unicode(U+0000~U+FFFF)
  • \U0001F604 Unicode(U+0000~U+10FFFF)

配列(array)

個数が決まっていて変更不可のものを配列という 個数変更できないがメモリ効率がよい

a1 := [3]string{}
a1[0] = "red"
a2[1] = "blue"
a3[2] = "green"

初期化時にあたりを設定することもできる。 初期化で個数が決まる場合は...と省略可能(3と明示してもおk)

a1 := [3]string{"red", "blue", "green"}
b1 := [...]string{"red", "blue", "green"}

スライス(slice)

可変な配列のことをスライスと呼ぶ 不可変な配列よりもメモリ効率や速度は若干落ちる

a1 := []string{}
// apendで追加
a1 = append(a1, "red")
a1 = append(a1, "green")
a1 = append(a1, "black")
a1 = append(a1, "blue")

// lenは長さ、capは容量を求める
fmt.Println(len(a1), cap(a1))

makeを用いてメモリの確保が可能。 容量超過時の再確保を減らして速度を早めることができる

a2 := make([]string, 0, 1024)
a2 = append(a2, "red")
a2 = append(a2, "green")
a2 = append(a2, "black")
a2 = append(a2, "blue")

スライスの操作

slice_array.go

操作意味
Slice[start:end]startからend-1まで
Slice[start:]startから末尾まで
Slice[:end]先頭からend-1まで
Slice[:]先頭から最後まで

Struct(構造体)

クラスの代わり。 構造体にはメンバ変数のみを定義し、クラスメソッドに相当する関数は関数名の前に(thisに相当する変数 *構造体名)をつけて定義する。

interface(インタフェース)

インタフェースはポリモーフィズムを実装するための機能 interface.goを参照

interface {}型

型のないインタフェースinterface {}はany型のように使用可能 interface2.goを参照

// 本来の定義方法
p1 := map[string]int{
  "x": 10,
  "y": 200,
}

// valueを可変に定義できる
p2 := map[string]interface{}{
  "name": "motty",
  "age":  90,
}

interface{}はanyの用に使えるという特徴を活かし、任意の型の値を持つマップを定義することができる。

ポインタ(pointer)

変数が格納されているメモリのアドレス。C言語と同様に、オブジェクトのポインタを参照するには&を、ポインタの中身を参照するには*を用いる。

変数の値を渡すことを「値渡し」 変数のポインタを渡すことを「参照渡し」と呼ぶ。 値渡しでは値のコピーしか渡していないので、元の変数を変更することは出来ませんが、ポインタ渡しであれば関数の中で変数の値を変更することが可能。

領域確保(new)

new()を用いて領域を動的に確保し、その領域へのポインタを得ることができる。 確保した領域は参照されなくなったあとにガーベジコレクションにより自動的に解放される。

遅延実行(defer)

「defer処理」は、関数から戻る直前に処理を遅延実行する。 リソースを忘れずに解放する際によく用いられます。

ゴルーチン(Goroutine)

並行処理。 スレッドよりも高速に並行処理を実現することができます。 メイン処理を実行しながら別の関数などを並行処理可能。

golang package

netパッケージ

netパッケージは、TCP/IP、UDP、ドメイン名解決、UNIXドメインソケットと含むUnixネットワークソケットへのポータブルインタフェースを提供する

定数

const (
  IPv4len = 4
  IPv6len = 16
)

変数

ウェルノウンIPv4アドレス。

var (
    IPv4bcast     = IPv4(255, 255, 255, 255) // ブロードキャスト
    IPv4allsys    = IPv4(224, 0, 0, 1)       // 全システム
    IPv4allrouter = IPv4(224, 0, 0, 2)       // 全ルータ
    IPv4zero      = IPv4(0, 0, 0, 0)         // 全てゼロ
)

ウェルノウンIPv6アドレス。

var (
    IPzero = make(IP, IPv6len) // all zeros
)

などなど

次のリンクを参照: http://golang.jp/pkg/net

io/ioutilパッケージ

import "io/ioutil"

ReadAll関数

func ReadAll(r io.Reader) ([]byte, os.Error)

ReadAllはエラーまたはEOFに達するまでrから読み込み、読み込んだデータを返す

次のリンクを参照: http://golang.jp/pkg/io-ioutil

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author