2020-10-01から1ヶ月間の記事一覧
goで繰り返し処理をするにはforを使う。基本的には昔ながらのforで for 初期化; 継続条件; 繰り返し後の処理 { 何かする。 } のように書く。違いは条件などを()で囲まないところくらい。 package main import "fmt" func main() { for i := 0; i < 10; i++ {…
モジュールはmodキーワードで作成する。 mod A { mod B { // some definitions. } fn Hello() { println!("?Hello¿"); } } 上記のようにモジュールを定義する。 モジュールないに定義できるものは、 · module · struct · enum · constant · function · trait
数値をconstで使うとコンテキストによって変わる。もしfloatの引数として使えばfloatにintで使えばintになる。 package main import "fmt" func plus_one(x float64) float64 { return x + 1.0 } func plus_two(x int) int { return x + 1 } const num = 1 <…
パッケージの作成 Cargo new パッケージ名パッケージには0もしくは1つのライブラリを含めることができる。 パッケージには最低でも1つ以上のバイナリを含めることができる。その場合はsrc/binにどうにかこうにかするらしい。通例としてビルドするときのエン…
go では変数宣言時に型を代入演算子の右側の式から推論する。 しかし右側の式でリテラルを使って値を生成したときは値が決まっている。var i uint = 3 var j = i これはiがuintとかいてあるのでuintになるがvar j = 3 とするとintになる。 このように3.4とす…
match大体はcaseと同じ基本構文 fn main() { var i = 'c'; match i { 'a' => println!("azasu"), 'b' => println!("baseball"), 'c' => { // {}で複数行の処理もできる。 println!("champion"); println!("victory"); }, _ => (), // _は任意の値という意味…
基本構文 Type(value) のように書いてキャストする。 goではキャストする際は明示的に行わなければならない。 func main() { var num int = 3 var num2 uint = uint(num) }
Nullという値を使ってデータがない事を表すのはよくないという事でその代わりにrustではOptionを使う。Some(value) None の2つの選択肢をもつenumである。
rustでもenumを定義できる。 定義する方法とインスタンス化する方法。 enum MyEnum { A, B } fn main() { let e = MyEnum::A; } enum値を関数の引数にできるその際は型にはMyEnumの部分を使う。 またメソッドを構造体と同じ方法で定義できる。値を付与するこ…
goでは基本型では初期値が決まっているので他の言語のように初期化する必要はない。 package main import "fmt" func main() { var ( a int b bool ) fmt.Println(a, b) // -> 0 false }
・import宣言のように変数もまとめて宣言できる。 package main import "fmt" var ( a int = 777 b bool = true c string = "I am lucky boy" ) func main() { fmt.Println(a, b, c) }
・メソッドの実装にはimplキーワードを使う。 struct Person { name: String, age: u8, greeting: String, } impl Person { fn hi(&self) { println!("{}", &self.greeting); } } メソッドにするには第一引数をselfを使わないといけない。 またselfも普通の…
varを使う代わりに:=を使う事で変数を宣言できる。 しかし関数内でしか使えないという制限はある。 package main import "fmt" func main() { a := "value" fmt.Println(a) }
まず普通のprint~系の関数はDisplayトレートを使ってフォーマットしている。 しかし自分で作った構造体にはそれを追加しなければならない。 しかし2つの条件を満たす事で出力できるようになる。 1つ目は"{}"の中で"{:?}"とする事 こうする事でDisplayでは…
・シンプルなプログラムを作れるようになる。 そのためにはどうすればいいか。 まず目標の変換 シンプルなプログラムを作れるようになるとはどういうことか シンプルとは 必要最低限の単純な物 つまり余分な物がない しかし余分かどうかは ある程度作られて…
・varを使う ・変数の宣言は関数レベルとパッケージレベルで可能 func main() { var msg string = "hello:0" var msg2 string = "こんにちはノシ" var po, wer = "po", "wer" fmt.Println(msg, msg2, po, wer) }
・基本構文 struct User { name: String, email: String, age: u8, } ・構造体の使用 let user = User { email: String::from("Taro"), // 順番は関係ない。 name: String::from("hoge@hoge.com"), age: 10, }; let user_name = user.name; ・フィールド名の…
・ネイキッドリターンともいうらしい。 ・戻り値に値を使わず、関数宣言時に戻り値も宣言する。 package main import "fmt" func add_10(x int) (result int) { result = x + 10 return } func main() { fmt.Println(add_10(99)) }
・スライス型には参照型同様に所有権の概念がない。・スライス型のシグニチャ &[type] // 例 &[u8] &[bool] &str let ary = [1, 2, 3, 4, 5]; スライス型の値の作り方。 let val: &[u8] = &ary[0..4]; let val = &ary[..4]; let val = &ary[0..4]; let val =…
use reqwest; use std::convert::TryInto; use reqwest::Error; use tokio; extern crate regex; use regex::{Regex, Captures}; const VALID_CAR: [char; 16] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; #[toki…
use reqwest; use std::convert::TryInto; use reqwest::Error; use tokio; extern crate regex; use regex::{Regex, Captures}; const VALID_CAR: [char; 16] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; #[toki…
まずどういう風に使われていたか MonadIO m => FilePath -> m (~~) 調べたら 型パラメータがなんのインスタンスかを示すために物であった 例えば上の例だと=>の右側で使われているmという型パラメータはMonadIOのインスタンスすですよという意味。(Num a, Or…
fn main() { let mut num= 10; let num_ref = &mut num; add_five(num_ref); println!("{}",num); } fn add_five(ref_int: &mut i32) { *ref_int = *ref_int + 5; }
・ webpack モジュールの管理+αのことをする。・ babel トランスコンパイラ。過去バージョンとの互換性をうまくやってくれる。・ glup.js タスクランナー。・ npm node package manager・ Browserify nodeのモジュールをブラウザで使うために作られたが今で…
基本の3パターン func f1() { // Do something. } // 引数を扱う。 func f2(int x) { // Do something. } // 戻り値を扱う。 func f3() int { // Do something. }
Rustでは一度使った変数を再宣言できる。 これによって何が起きるか。 mut じゃなくても再代入できる。 他の型の値を利用できる。 fn main() { let spaces = " "; let spaces = spaces.len(); // 下のように変数を分ける必要がない。 let spaces_str = " "; …
・const キーワードを使って宣言 ・定数はどこでも定義できる。 const CONSTANT_VALUE: i32 = 100_000_000; fn main() { println!("{}", CONSTANT_VALUE); }
・すべてのプログラムはパッケージ上に作られる。 ・goのエントリーポイントになるパッケージはmain package main ・パッケージは最後のパスのファイル群で構成されている。 "math/rand" なら package randというファイル群で構成されている。 ・パッケージ…
interactの役割は標準入力の内容を引数の関数に渡して、戻り値を出力する。 main = interact getStringLength where getStringLength data = show(length data) ++ "\n" showは引数の値をを文字列に変換する。 lengthは文字列の長さを取得する。
・朝早くの勉強 ・夜寝る前の復習 ・メモを取る(きれいな文字で) ・実際に手を動かすことを繰り返す ・すでにある知識に紐付けながら勉強する ・ブログに書く ・声に出して読む ・一気に勉強しない(一時的に覚えててもしばらく経つとほとんど忘れてる気がす…