如何在golang中为变量分配运算符?

Is it possible to assign an infix operator to a variable?

operator := <<

If so how is it applied to arguments?

No, it's not possible to store an operator in a variable.

Perhaps the best way is to define a set of operations and have a wrapper struct with an Apply method:

type Operation int

const (
  Left Operation = iota
  Right
)

type State struct {
  Value int
}

func (s *State) Apply(o Operation) {
  switch (o) {
    case Left:
       s.Value = s.value << 1
    case Right:
       s.Value = s.value >> 1
  }
}

Sample use:

value := State{4} // original value
op := Left
value.Apply(op) // s.Value is now 8

You can wrap the operator in a function (playground):

package main

import (
    "fmt"
)

func main() {
    operators := []func(int)int{left, left, left, right, right}

    value := 4

    for _, operator := range operators {
        value = operator(value)
        fmt.Println(value)
    }
}

func left(x int) int {
    return x << 1
}

func right(x int) int {
    return x >> 1
}

This prints:

8
16
32
16
8