Skip to content

Instantly share code, notes, and snippets.

@arosh
Last active April 9, 2017 08:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arosh/3f777066dfb0152d70c4 to your computer and use it in GitHub Desktop.
Save arosh/3f777066dfb0152d70c4 to your computer and use it in GitHub Desktop.
go tutorial
package main

import (
  "fmt"
)

func main() {
  var total int = 0
  for n := 2; n <= 100; n++ {
    if isPrime(n) {
      total += n
    }
  }
  fmt.Println(total)
}

func isPrime(n int) bool {
  for v := 2; v * v <= n; v++ {
    if n % v == 0 {
      return false
    }
  }
  return true
}
package main

import (
	"fmt"
)

func main() {
	fmt.Print("Hello, ")
	fmt.Println("world.")

	fmt.Println(1 + 2*3)
	fmt.Println(1, 10, 3.141592) // Spaces are always added between operands
}
package main

import (
	"fmt"
)

func main() {
  // see: http://golang.org/pkg/fmt/#pkg-overview
	fmt.Printf("%d %x %b %.2f\n", 17, 17, 17, 3.141592) // fmt.Printflnは無い
}
package main

import (
  "fmt"
  "os"
)

func main() {
  fmt.Fprint(os.Stderr, "Hello, ")
  fmt.Fprintln(os.Stderr, 1+2*3)
  fmt.Fprintf(os.Stderr, "%d %x %b", 17, 17, 17)
  fmt.Fprintf(os.Stderr, "%.2f\n", 3.141592)
}
package main

import (
  "fmt"
  "bufio"
  "os"
)

func main() {
  sc := bufio.NewScanner(os.Stdin)
  for i := 0; i < 100; i++ {
    if sc.Scan() == false {
      // EOFの場合はErr()==nilであり, この処理は適切ではないかもしれない
      panic(sc.Err())
    }
    line := sc.Text()
    fmt.Println(line)
  }
}
package main

import (
  "fmt"
  "bufio"
  "os"
)

func main() {
  sc := bufio.NewScanner(os.Stdin)
  for sc.Scan() {
    fmt.Printf("<%v>\n", sc.Text())
  }
}
package main

import (
  "fmt"
)

func main() {
  for i:= 0; i < 5; i++ {
    var a, b int
    _, err := fmt.Scan(&a, &b)
    if err != nil {
      panic(err)
    }
    fmt.Printf("a = %v, b = %v\n", a, b)
  }
}
package main

import (
  "fmt"
)

func main() {
  const N = 1000
  var is_prime [N]bool
  for i := range is_prime {
    is_prime[i] = true
  }

  primes := make([]int, 0)
  for p := 2; p < N; p++ {
    if is_prime[p] {
      primes = append(primes, p)
      for q := p*p; q < N; q += p {
        is_prime[q] = false
      }
    }
  }
  fmt.Println(len(primes))
}
package main

import (
  "fmt"
)

func main() {
  // Sliceのappendはヤバいパターンがあるので注意
  // 解決策1. ポインタで持つ (http://qiita.com/koher/items/3c570dfdd3ee25cd8017)
  // 解決策2. capを書き換える (http://jxck.hatenablog.com/entry/golang-slice-internals2)
  fractal := []int{0}
  for i := 1; i < 10; i++ {
    fractal = append(append(fractal, i), fractal...)
  }
  fractal = (fractal)[:30]
  fmt.Println(fractal)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment