Skip to content

Instantly share code, notes, and snippets.

@jqjk
Last active April 18, 2022 06:15
Show Gist options
  • Save jqjk/15f57a93c69aa3648ae4714fc42b5ba6 to your computer and use it in GitHub Desktop.
Save jqjk/15f57a93c69aa3648ae4714fc42b5ba6 to your computer and use it in GitHub Desktop.
package main
import (
"errors"
"fmt"
"reflect"
)
var ErrNotPointerToString = errors.New("Not a pointer to a string")
func main() {
var s string
err := setString(&s, "hoge")
fmt.Println(s, err == nil) // hoge true
var n int
err = setString(&n, "hoge")
fmt.Println(n, err == nil) // 0 false
}
func setString(s interface{}, value string) error {
v := reflect.ValueOf(s)
if v.Kind() == reflect.Ptr &&
v.Elem().Kind() == reflect.String {
v.Elem().Set(reflect.ValueOf(value))
return nil
}
return ErrNotPointerToString
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment