Code optimization. (#18)

diff --git a/client/rowrecord_test.go b/client/rowrecord_test.go
index 145633e..a827f62 100644
--- a/client/rowrecord_test.go
+++ b/client/rowrecord_test.go
@@ -38,13 +38,13 @@
 			name: "GetFields",
 			fields: fields{
 				timestamp: 0,
-				fields: []*Field{&Field{
+				fields: []*Field{{
 					dataType: FLOAT,
 					name:     "temperature",
 					value:    0.1,
 				}},
 			},
-			want: []*Field{&Field{
+			want: []*Field{{
 				dataType: FLOAT,
 				name:     "temperature",
 				value:    0.1,
diff --git a/client/rpcdataset.go b/client/rpcdataset.go
index 829c15a..6601dca 100644
--- a/client/rpcdataset.go
+++ b/client/rpcdataset.go
@@ -115,23 +115,18 @@
 			case BOOLEAN:
 				s.values[i] = valueBuffer[:1]
 				s.queryDataSet.ValueList[i] = valueBuffer[1:]
-				break
 			case INT32:
 				s.values[i] = valueBuffer[:4]
 				s.queryDataSet.ValueList[i] = valueBuffer[4:]
-				break
 			case INT64:
 				s.values[i] = valueBuffer[:8]
 				s.queryDataSet.ValueList[i] = valueBuffer[8:]
-				break
 			case FLOAT:
 				s.values[i] = valueBuffer[:4]
 				s.queryDataSet.ValueList[i] = valueBuffer[4:]
-				break
 			case DOUBLE:
 				s.values[i] = valueBuffer[:8]
 				s.queryDataSet.ValueList[i] = valueBuffer[8:]
-				break
 			case TEXT:
 				length := bytesToInt32(valueBuffer[:4])
 				s.values[i] = valueBuffer[4 : 4+length]
@@ -445,7 +440,14 @@
 		return false, errClosed
 	}
 	s.rowsIndex = 0
-	req := rpc.TSFetchResultsReq{s.sessionId, s.sql, s.fetchSize, s.queryId, true, s.timeoutMs}
+	req := rpc.TSFetchResultsReq{
+		SessionId: s.sessionId,
+		Statement: s.sql,
+		FetchSize: s.fetchSize,
+		QueryId:   s.queryId,
+		IsAlign:   true,
+		Timeout:   s.timeoutMs,
+	}
 	resp, err := s.client.FetchResults(context.Background(), &req)
 
 	if err != nil {
@@ -478,7 +480,8 @@
 			QueryId:   &s.queryId,
 		}
 
-		status, err := s.client.CloseOperation(context.Background(), closeRequest)
+		var status *rpc.TSStatus
+		status, err = s.client.CloseOperation(context.Background(), closeRequest)
 		if err == nil {
 			err = VerifySuccess(status)
 		}
diff --git a/client/rpcdataset_test.go b/client/rpcdataset_test.go
index c5c736f..a8a493d 100644
--- a/client/rpcdataset_test.go
+++ b/client/rpcdataset_test.go
@@ -539,27 +539,27 @@
 			want: &RowRecord{
 				timestamp: 0,
 				fields: []*Field{
-					&Field{
+					{
 						name:     "root.ln.device1.restart_count",
 						dataType: INT32,
 						value:    int32(1),
-					}, &Field{
+					}, {
 						name:     "root.ln.device1.price",
 						dataType: DOUBLE,
 						value:    float64(1988.2),
-					}, &Field{
+					}, {
 						name:     "root.ln.device1.tick_count",
 						dataType: INT64,
 						value:    int64(3333333),
-					}, &Field{
+					}, {
 						name:     "root.ln.device1.temperature",
 						dataType: FLOAT,
 						value:    float32(12.1),
-					}, &Field{
+					}, {
 						name:     "root.ln.device1.description",
 						dataType: TEXT,
 						value:    string("Test Device 1"),
-					}, &Field{
+					}, {
 						name:     "root.ln.device1.status",
 						dataType: BOOLEAN,
 						value:    bool(true),
diff --git a/client/session.go b/client/session.go
index 43fae9d..794c028 100644
--- a/client/session.go
+++ b/client/session.go
@@ -39,7 +39,7 @@
 	DefaultFetchSize = 1024
 )
 
-var lengthError = errors.New("deviceIds, times, measurementsList and valuesList's size should be equal")
+var errLength = errors.New("deviceIds, times, measurementsList and valuesList's size should be equal")
 
 type Config struct {
 	Host      string
@@ -54,7 +54,6 @@
 	config             *Config
 	client             *rpc.TSIServiceClient
 	sessionId          int64
-	isClose            bool
 	trans              thrift.TTransport
 	requestStatementId int64
 }
@@ -484,7 +483,7 @@
 	timestamps []int64) (*rpc.TSInsertRecordsReq, error) {
 	length := len(deviceIds)
 	if length != len(timestamps) || length != len(measurements) || length != len(values) {
-		return nil, lengthError
+		return nil, errLength
 	}
 	request := rpc.TSInsertRecordsReq{
 		SessionId:        s.sessionId,
@@ -550,12 +549,11 @@
 				return nil, fmt.Errorf("values[%d] %v(%v) must be float64", i, v, reflect.TypeOf(v))
 			}
 		case TEXT:
-			switch v.(type) {
+			switch s := v.(type) {
 			case string:
-				text := v.(string)
-				size := len(text)
+				size := len(s)
 				binary.Write(buff, binary.BigEndian, int32(size))
-				binary.Write(buff, binary.BigEndian, []byte(text))
+				binary.Write(buff, binary.BigEndian, []byte(s))
 			default:
 				return nil, fmt.Errorf("values[%d] %v(%v) must be string", i, v, reflect.TypeOf(v))
 			}
diff --git a/client/tablet.go b/client/tablet.go
index 20050c4..4a89835 100644
--- a/client/tablet.go
+++ b/client/tablet.go
@@ -84,77 +84,77 @@
 
 func (t *Tablet) SetValueAt(value interface{}, columnIndex, rowIndex int) error {
 	if value == nil {
-		return errors.New("Illegal argument value can't be nil")
+		return errors.New("illegal argument value can't be nil")
 	}
 
 	if columnIndex < 0 || columnIndex > len(t.measurementSchemas) {
-		return fmt.Errorf("Illegal argument columnIndex %d", columnIndex)
+		return fmt.Errorf("illegal argument columnIndex %d", columnIndex)
 	}
 
 	if rowIndex < 0 || rowIndex > int(t.rowCount) {
-		return fmt.Errorf("Illegal argument rowIndex %d", rowIndex)
+		return fmt.Errorf("illegal argument rowIndex %d", rowIndex)
 	}
 
 	switch t.measurementSchemas[columnIndex].DataType {
 	case BOOLEAN:
 		values := t.values[columnIndex].([]bool)
-		switch value.(type) {
+		switch v := value.(type) {
 		case bool:
-			values[rowIndex] = value.(bool)
+			values[rowIndex] = v
 		case *bool:
-			values[rowIndex] = *value.(*bool)
+			values[rowIndex] = *v
 		default:
-			return fmt.Errorf("Illegal argument value %v %v", value, reflect.TypeOf(value))
+			return fmt.Errorf("illegal argument value %v %v", value, reflect.TypeOf(value))
 		}
 	case INT32:
 		values := t.values[columnIndex].([]int32)
-		switch value.(type) {
+		switch v := value.(type) {
 		case int32:
-			values[rowIndex] = value.(int32)
+			values[rowIndex] = v
 		case *int32:
-			values[rowIndex] = *value.(*int32)
+			values[rowIndex] = *v
 		default:
-			return fmt.Errorf("Illegal argument value %v %v", value, reflect.TypeOf(value))
+			return fmt.Errorf("illegal argument value %v %v", value, reflect.TypeOf(value))
 		}
 	case INT64:
 		values := t.values[columnIndex].([]int64)
-		switch value.(type) {
+		switch v := value.(type) {
 		case int64:
-			values[rowIndex] = value.(int64)
+			values[rowIndex] = v
 		case *int64:
-			values[rowIndex] = *value.(*int64)
+			values[rowIndex] = *v
 		default:
-			return fmt.Errorf("Illegal argument value %v %v", value, reflect.TypeOf(value))
+			return fmt.Errorf("illegal argument value %v %v", value, reflect.TypeOf(value))
 		}
 	case FLOAT:
 		values := t.values[columnIndex].([]float32)
-		switch value.(type) {
+		switch v := value.(type) {
 		case float32:
-			values[rowIndex] = value.(float32)
+			values[rowIndex] = v
 		case *float32:
-			values[rowIndex] = *value.(*float32)
+			values[rowIndex] = *v
 		default:
-			return fmt.Errorf("Illegal argument value %v %v", value, reflect.TypeOf(value))
+			return fmt.Errorf("illegal argument value %v %v", value, reflect.TypeOf(value))
 		}
 	case DOUBLE:
 		values := t.values[columnIndex].([]float64)
-		switch value.(type) {
+		switch v := value.(type) {
 		case float64:
-			values[rowIndex] = value.(float64)
+			values[rowIndex] = v
 		case *float64:
-			values[rowIndex] = *value.(*float64)
+			values[rowIndex] = *v
 		default:
-			return fmt.Errorf("Illegal argument value %v %v", value, reflect.TypeOf(value))
+			return fmt.Errorf("illegal argument value %v %v", value, reflect.TypeOf(value))
 		}
 	case TEXT:
 		values := t.values[columnIndex].([]string)
-		switch value.(type) {
+		switch v := value.(type) {
 		case string:
-			values[rowIndex] = value.(string)
+			values[rowIndex] = v
 		case []byte:
-			values[rowIndex] = string(value.([]byte))
+			values[rowIndex] = string(v)
 		default:
-			return fmt.Errorf("Illegal argument value %v %v", value, reflect.TypeOf(value))
+			return fmt.Errorf("illegal argument value %v %v", value, reflect.TypeOf(value))
 		}
 	}
 	return nil
@@ -166,11 +166,11 @@
 
 func (t *Tablet) GetValueAt(columnIndex, rowIndex int) (interface{}, error) {
 	if columnIndex < 0 || columnIndex > len(t.measurementSchemas) {
-		return nil, fmt.Errorf("Illegal argument columnIndex %d", columnIndex)
+		return nil, fmt.Errorf("illegal argument columnIndex %d", columnIndex)
 	}
 
 	if rowIndex < 0 || rowIndex > int(t.rowCount) {
-		return nil, fmt.Errorf("Illegal argument rowIndex %d", rowIndex)
+		return nil, fmt.Errorf("illegal argument rowIndex %d", rowIndex)
 	}
 
 	schema := t.measurementSchemas[columnIndex]
@@ -188,7 +188,7 @@
 	case TEXT:
 		return t.values[columnIndex].([]string)[rowIndex], nil
 	default:
-		return nil, fmt.Errorf("Illegal datatype %v", schema.DataType)
+		return nil, fmt.Errorf("illegal datatype %v", schema.DataType)
 	}
 }
 
@@ -236,7 +236,7 @@
 				binary.Write(buff, binary.BigEndian, []byte(s))
 			}
 		default:
-			return nil, fmt.Errorf("Illegal datatype %v", schema.DataType)
+			return nil, fmt.Errorf("illegal datatype %v", schema.DataType)
 		}
 	}
 	return buff.Bytes(), nil
@@ -270,7 +270,7 @@
 		case TEXT:
 			tablet.values[i] = make([]string, rowCount)
 		default:
-			return nil, fmt.Errorf("Illegal datatype %v", schema.DataType)
+			return nil, fmt.Errorf("illegal datatype %v", schema.DataType)
 		}
 	}
 	return tablet, nil
diff --git a/client/tablet_test.go b/client/tablet_test.go
index 13c397d..09fc6ca 100644
--- a/client/tablet_test.go
+++ b/client/tablet_test.go
@@ -26,7 +26,7 @@
 
 func createTablet(size int) (*Tablet, error) {
 	tablet, err := NewTablet("root.ln.TestDevice", []*MeasurementSchema{
-		&MeasurementSchema{
+		{
 			Measurement: "restart_count",
 			DataType:    INT32,
 			Encoding:    RLE,
@@ -34,17 +34,17 @@
 			Properties: map[string]string{
 				"owner": "Mark Liu",
 			},
-		}, &MeasurementSchema{
+		}, {
 			Measurement: "price",
 			DataType:    DOUBLE,
 			Encoding:    GORILLA,
 			Compressor:  SNAPPY,
-		}, &MeasurementSchema{
+		}, {
 			Measurement: "tick_count",
 			DataType:    INT64,
 			Encoding:    RLE,
 			Compressor:  SNAPPY,
-		}, &MeasurementSchema{
+		}, {
 			Measurement: "temperature",
 			DataType:    FLOAT,
 			Encoding:    GORILLA,
@@ -52,7 +52,7 @@
 			Properties: map[string]string{
 				"owner": "Mark Liu",
 			},
-		}, &MeasurementSchema{
+		}, {
 			Measurement: "description",
 			DataType:    TEXT,
 			Encoding:    PLAIN,
@@ -61,7 +61,7 @@
 				"owner": "Mark Liu",
 			},
 		},
-		&MeasurementSchema{
+		{
 			Measurement: "status",
 			DataType:    BOOLEAN,
 			Encoding:    RLE,
@@ -92,7 +92,7 @@
 			fields: fields{
 				deviceId: "root.ln.device5",
 				measurementSchemas: []*MeasurementSchema{
-					&MeasurementSchema{
+					{
 						Measurement: "restart_count",
 						DataType:    INT32,
 						Encoding:    RLE,
@@ -100,17 +100,17 @@
 						Properties: map[string]string{
 							"owner": "Mark Liu",
 						},
-					}, &MeasurementSchema{
+					}, {
 						Measurement: "price",
 						DataType:    DOUBLE,
 						Encoding:    GORILLA,
 						Compressor:  SNAPPY,
-					}, &MeasurementSchema{
+					}, {
 						Measurement: "tick_count",
 						DataType:    INT64,
 						Encoding:    RLE,
 						Compressor:  SNAPPY,
-					}, &MeasurementSchema{
+					}, {
 						Measurement: "temperature",
 						DataType:    FLOAT,
 						Encoding:    GORILLA,
@@ -118,7 +118,7 @@
 						Properties: map[string]string{
 							"owner": "Mark Liu",
 						},
-					}, &MeasurementSchema{
+					}, {
 						Measurement: "description",
 						DataType:    TEXT,
 						Encoding:    PLAIN,
@@ -127,7 +127,7 @@
 							"owner": "Mark Liu",
 						},
 					},
-					&MeasurementSchema{
+					{
 						Measurement: "status",
 						DataType:    BOOLEAN,
 						Encoding:    RLE,
diff --git a/client/utils_test.go b/client/utils_test.go
index 6b08e52..9727ac5 100644
--- a/client/utils_test.go
+++ b/client/utils_test.go
@@ -218,7 +218,7 @@
 					Code:    MultipleError,
 					Message: &errMsg,
 					SubStatus: []*rpc.TSStatus{
-						&rpc.TSStatus{
+						{
 							Code:    ShutDownError,
 							Message: &errMsg,
 						},
@@ -263,7 +263,7 @@
 			name: "InternalServerError",
 			args: args{
 				statuses: []*rpc.TSStatus{
-					&rpc.TSStatus{
+					{
 						Code:      InternalServerError,
 						Message:   &internalServerError,
 						SubStatus: []*rpc.TSStatus{},
@@ -275,7 +275,7 @@
 			name: "SuccessStatus",
 			args: args{
 				statuses: []*rpc.TSStatus{
-					&rpc.TSStatus{
+					{
 						Code:      SuccessStatus,
 						Message:   &success,
 						SubStatus: []*rpc.TSStatus{},
diff --git a/example/session_example.go b/example/session_example.go
index 7e356b2..0def366 100644
--- a/example/session_example.go
+++ b/example/session_example.go
@@ -20,7 +20,6 @@
 package main
 
 import (
-	"errors"
 	"flag"
 	"fmt"
 	"log"
@@ -178,19 +177,14 @@
 			switch sessionDataSet.GetColumnDataType(i) {
 			case client.BOOLEAN:
 				fmt.Print(sessionDataSet.GetBool(columnName))
-				break
 			case client.INT32:
 				fmt.Print(sessionDataSet.GetInt32(columnName))
-				break
 			case client.INT64:
 				fmt.Print(sessionDataSet.GetInt64(columnName))
-				break
 			case client.FLOAT:
 				fmt.Print(sessionDataSet.GetFloat(columnName))
-				break
 			case client.DOUBLE:
 				fmt.Print(sessionDataSet.GetDouble(columnName))
-				break
 			case client.TEXT:
 				fmt.Print(sessionDataSet.GetText(columnName))
 			default:
@@ -365,33 +359,33 @@
 
 func createTablet(rowCount int) (*client.Tablet, error) {
 	tablet, err := client.NewTablet("root.ln.device1", []*client.MeasurementSchema{
-		&client.MeasurementSchema{
+		{
 			Measurement: "restart_count",
 			DataType:    client.INT32,
 			Encoding:    client.RLE,
 			Compressor:  client.SNAPPY,
-		}, &client.MeasurementSchema{
+		}, {
 			Measurement: "price",
 			DataType:    client.DOUBLE,
 			Encoding:    client.GORILLA,
 			Compressor:  client.SNAPPY,
-		}, &client.MeasurementSchema{
+		}, {
 			Measurement: "tick_count",
 			DataType:    client.INT64,
 			Encoding:    client.RLE,
 			Compressor:  client.SNAPPY,
-		}, &client.MeasurementSchema{
+		}, {
 			Measurement: "temperature",
 			DataType:    client.FLOAT,
 			Encoding:    client.GORILLA,
 			Compressor:  client.SNAPPY,
-		}, &client.MeasurementSchema{
+		}, {
 			Measurement: "description",
 			DataType:    client.TEXT,
 			Encoding:    client.PLAIN,
 			Compressor:  client.SNAPPY,
 		},
-		&client.MeasurementSchema{
+		{
 			Measurement: "status",
 			DataType:    client.BOOLEAN,
 			Encoding:    client.RLE,
@@ -493,16 +487,3 @@
 		}
 	}
 }
-
-func validate(tablet *client.Tablet) (err error) {
-	temperatureColumn := 2
-	for i := 0; i < tablet.GetRowCount(); i++ {
-		if v, err := tablet.GetValueAt(temperatureColumn, i); err == nil {
-			temperature := v.(float32)
-			if temperature > 42.5 || temperature < 35.1 {
-				return errors.New("The temperature must be in [35..42]")
-			}
-		}
-	}
-	return err
-}