Golang: using pointers in for-range loop

You can achieve the same effect without a function though: just create a local copy and use the address of that:

for _, each := range arr {
    each2 := each
    err := ds.repo.Insert(&each2)
    // ...

Also note that you may also store the address of the slice elements:

for i := range arr {
    err := ds.repo.Insert(&arr[i])
    // ...

Solve “using a reference for the variable on range scope `xxxx` (scopelint)” error.

Continue Reading

Golang: convert between int, int64 and string

int to string

s := strconv.Itoa(123)

int64 to string

var n int64 = 123
s := strconv.FormatInt(n, 10) // s == "123" (decimal)
var n int64 = 123
s := strconv.FormatInt(n, 16) // s == "7b" (hexadecimal)

string to int

s := "123"
n, err := strconv.Atoi(s)

string to int64

s := "123"
n, err := strconv.ParseInt(s, 10, 64)
Continue Reading

basic Git commands

  • git clone [url]
  • git add [filename]
  • git commit -m “Commit message”
  • git diff [first branch] [second branch]
  • git reset [file]
  • git status
  • git remote prune [remote name]

use git cherry pick

  1. git show [commit hash]
  2. git cherry-pick [commit hash] -n or git cherry-pick [from commit hash]^..[to commit hash] -n
  3. git status
  4. git commit -m “`git log –oneline -n1 [commit hash]`”


git log --oneline [filename]
git checkout [commit hash] [filename]

Continue Reading