"github.com/volcengine/ve-tos-golang-sdk/v2/tos"
func checkErr(err error) {
if serverErr, ok := err.(*tos.TosServerError); ok {
fmt.Println("Error:", serverErr.Error())
fmt.Println("Request ID:", serverErr.RequestID)
fmt.Println("Response Status Code:", serverErr.StatusCode)
fmt.Println("Response Header:", serverErr.Header)
fmt.Println("Response Err Code:", serverErr.Code)
fmt.Println("Response Err Msg:", serverErr.Message)
} else if clientErr, ok := err.(*tos.TosClientError); ok {
fmt.Println("Error:", clientErr.Error())
fmt.Println("Client Cause Err:", clientErr.Cause.Error())
fmt.Println("Error:", err)
accessKey = os.Getenv("TOS_ACCESS_KEY")
secretKey = os.Getenv("TOS_SECRET_KEY")
endpoint = "https://tos-cn-beijing.volces.com"
bucketName = "*** Provide your bucket name ***"
objectKey = "example_dir/example.txt"
ctx = context.Background()
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))
date := time.Date(2022, time.October, 24, 0, 0, 0, 0, time.UTC)
getoutput, err := client.GetObjectV2(ctx, &tos.GetObjectV2Input{
if serverErr, ok := err.(*tos.TosServerError); ok {
if serverErr.StatusCode == http.StatusNotModified {
fmt.Println("Object not modify, Request ID:", serverErr.RequestID)
fmt.Println("Error:", serverErr.Error())
fmt.Println("Request ID:", serverErr.RequestID)
fmt.Println("Response Status Code:", serverErr.StatusCode)
fmt.Println("Response Header:", serverErr.Header)
fmt.Println("Response Err Code:", serverErr.Code)
fmt.Println("Response Err Msg:", serverErr.Message)
defer getoutput.Content.Close()
body, err := ioutil.ReadAll(getoutput.Content)
fmt.Println("GetObject Content:", body)
getoutput, err = client.GetObjectV2(ctx, &tos.GetObjectV2Input{
IfUnmodifiedSince: date,
if serverErr, ok := err.(*tos.TosServerError); ok {
if serverErr.StatusCode == http.StatusPreconditionFailed {
fmt.Println("Object modify, Request ID:", serverErr.RequestID)
fmt.Println("Error:", serverErr.Error())
fmt.Println("Request ID:", serverErr.RequestID)
fmt.Println("Response Status Code:", serverErr.StatusCode)
fmt.Println("Response Header:", serverErr.Header)
fmt.Println("Response Err Code:", serverErr.Code)
fmt.Println("Response Err Msg:", serverErr.Message)
defer getoutput.Content.Close()
body, err = ioutil.ReadAll(getoutput.Content)
fmt.Println("GetObject Content:", body)